当前位置: 首页>>代码示例>>C++>>正文


C++ btQuaternion::getZ方法代码示例

本文整理汇总了C++中btQuaternion::getZ方法的典型用法代码示例。如果您正苦于以下问题:C++ btQuaternion::getZ方法的具体用法?C++ btQuaternion::getZ怎么用?C++ btQuaternion::getZ使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在btQuaternion的用法示例。


在下文中一共展示了btQuaternion::getZ方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: rotate

 const btVector3 rotate( const btQuaternion& quat, const btVector3 & vec )
{
    float tmpX, tmpY, tmpZ, tmpW;
    tmpX = ( ( ( quat.getW() * vec.getX() ) + ( quat.getY() * vec.getZ() ) ) - ( quat.getZ() * vec.getY() ) );
    tmpY = ( ( ( quat.getW() * vec.getY() ) + ( quat.getZ() * vec.getX() ) ) - ( quat.getX() * vec.getZ() ) );
    tmpZ = ( ( ( quat.getW() * vec.getZ() ) + ( quat.getX() * vec.getY() ) ) - ( quat.getY() * vec.getX() ) );
    tmpW = ( ( ( quat.getX() * vec.getX() ) + ( quat.getY() * vec.getY() ) ) + ( quat.getZ() * vec.getZ() ) );
    return btVector3(
        ( ( ( ( tmpW * quat.getX() ) + ( tmpX * quat.getW() ) ) - ( tmpY * quat.getZ() ) ) + ( tmpZ * quat.getY() ) ),
        ( ( ( ( tmpW * quat.getY() ) + ( tmpY * quat.getW() ) ) - ( tmpZ * quat.getX() ) ) + ( tmpX * quat.getZ() ) ),
        ( ( ( ( tmpW * quat.getZ() ) + ( tmpZ * quat.getW() ) ) - ( tmpX * quat.getY() ) ) + ( tmpY * quat.getX() ) )
    );
}
开发者ID:Mashewnutz,项目名称:Slo,代码行数:13,代码来源:BenchmarkDemo.cpp

示例2:

static inline void copy_quat_btquat(float quat[4], const btQuaternion &btquat)
{
	quat[0] = btquat.getW();
	quat[1] = btquat.getX();
	quat[2] = btquat.getY();
	quat[3] = btquat.getZ();
}
开发者ID:YasirArafath,项目名称:blender-git,代码行数:7,代码来源:rb_bullet_api.cpp

示例3: btQuaternion_to_Quaternion

void btQuaternion_to_Quaternion(JNIEnv * const &jenv, jobject &target, const btQuaternion & source)
{
	quaternion_ensurefields(jenv, target);
	jenv->SetFloatField(target, quaternion_x, source.getX());
	jenv->SetFloatField(target, quaternion_y, source.getY());
	jenv->SetFloatField(target, quaternion_z, source.getZ());
	jenv->SetFloatField(target, quaternion_w, source.getW());
}
开发者ID:0302zq,项目名称:libgdx,代码行数:8,代码来源:mathtypes.cpp

示例4:

Quaternion::Quaternion(const btQuaternion &aBulletQuaternion)
{
	x = aBulletQuaternion.getX();
	y = aBulletQuaternion.getY();
	z = aBulletQuaternion.getZ();
	w = aBulletQuaternion.getW();

}
开发者ID:jfcameron,项目名称:cpp11Engine,代码行数:8,代码来源:Quaternion.cpp

示例5: quatToEuler

	// Taken from Irrlicht page
	btVector3 quatToEuler(const btQuaternion & quat)
	{
		btVector3 ret;
		btScalar w = quat.getW(), x = quat.getX(), y = quat.getY(), z = quat.getZ();
		float ws = w*w, xs = x*x, ys = y*y, zs = z*z;
		ret.setX(atan2f(2.0f*(y*z+x*w), -xs-ys+zs+ws));
		ret.setY(asinf(-2.0f*(x*z-y*w)));
		ret.setZ(atan2f(2.0f*(x*y+z*w), xs-ys-zs+ws));
		ret *= irr::core::RADTODEG;
		return ret;
	}
开发者ID:DeathByTape,项目名称:OldWork,代码行数:12,代码来源:PhysicsManagerImpl.cpp

示例6: QuaternionToEuler

void Physics::QuaternionToEuler( const btQuaternion &TQuat, btVector3 &TEuler )
{
	float a[3];

	const float w = TQuat.getW();
	const float x = TQuat.getX();
	const float y = TQuat.getY();
	const float z = TQuat.getZ();
	
	QuaternionToEuler( w, x, y, z, a );

	TEuler.setX( a[0] );
	TEuler.setY( a[1] );
	TEuler.setZ( a[2] );
}
开发者ID:maximbilan,项目名称:cpp_marmalade_sdk_the_pursuit_3d,代码行数:15,代码来源:Physics.cpp

示例7: setX

void Vec3::setHPR(const btQuaternion& q)
{
    float W = q.getW();
    float X = q.getX();
    float Y = q.getY();
    float Z = q.getZ();
    float WSquared = W * W;
    float XSquared = X * X;
    float YSquared = Y * Y;
    float ZSquared = Z * Z;

    setX(atan2f(2.0f * (Y * Z + X * W), -XSquared - YSquared + ZSquared + WSquared));
    setY(asinf(-2.0f * (X * Z - Y * W)));
    setZ(atan2f(2.0f * (X * Y + Z * W), XSquared - YSquared - ZSquared + WSquared));
}   // setHPR(btQuaternion)
开发者ID:Charence,项目名称:stk-code,代码行数:15,代码来源:vec3.cpp

示例8: QuaternionToEuler

// Converts a quaternion to an euler angle
void _Physics::QuaternionToEuler(const btQuaternion &Quat, btVector3 &Euler) {
	btScalar W = Quat.getW();
	btScalar X = Quat.getX();
	btScalar Y = Quat.getY();
	btScalar Z = Quat.getZ();
	float WSquared = W * W;
	float XSquared = X * X;
	float YSquared = Y * Y;
	float ZSquared = Z * Z;

	Euler.setX(atan2f(2.0f * (Y * Z + X * W), -XSquared - YSquared + ZSquared + WSquared));
	Euler.setY(asinf(-2.0f * (X * Z - Y * W)));
	Euler.setZ(atan2f(2.0f * (X * Y + Z * W), XSquared - YSquared - ZSquared + WSquared));
	Euler *= irr::core::RADTODEG;
}
开发者ID:jazztickets,项目名称:irrlamb,代码行数:16,代码来源:physics.cpp

示例9: QuaternionToEuler

// Converts a quaternion to an euler angle
void QuaternionToEuler(const btQuaternion &tQuat, btVector3 &tEuler) {
  btScalar w = tQuat.getW();
  btScalar x = tQuat.getX();
  btScalar y = tQuat.getY();
  btScalar z = tQuat.getZ();
  float wSquared = w * w;
  float xSquared = x * x;
  float ySquared = y * y;
  float zSquared = z * z;

  tEuler.setX(atan2f(2.0f * (y * z + x * w), -xSquared - ySquared + zSquared + wSquared));
  tEuler.setY(asinf(-2.0f * (x * z - y * w)));
  tEuler.setZ(atan2f(2.0f * (x * y + z * w), xSquared - ySquared - zSquared + wSquared));
  tEuler *= SIMD_DEGS_PER_RAD;
}
开发者ID:shinta-h,项目名称:bowling,代码行数:16,代码来源:util.cpp

示例10: QuaternionToEuler

// Converts a quaternion to an euler angle
void CTBulletHelper::QuaternionToEuler(const btQuaternion &TQuat, btVector3 &TEuler) {
	btScalar W = TQuat.getW();
	btScalar X = TQuat.getX();
	btScalar Y = TQuat.getY();
	btScalar Z = TQuat.getZ();
	float WSquared = W * W;
	float XSquared = X * X;
	float YSquared = Y * Y;
	float ZSquared = Z * Z;
	
	TEuler.setX(atan2f(2.0f * (Y * Z + X * W), -XSquared - YSquared + ZSquared + WSquared));
	TEuler.setY(asinf(-2.0f * (X * Z - Y * W)));
	TEuler.setZ(atan2f(2.0f * (X * Y + Z * W), XSquared - YSquared - ZSquared + WSquared));
	TEuler *= core::RADTODEG;
}
开发者ID:EEmmanuel7,项目名称:leapmotion-irrlicht,代码行数:16,代码来源:CTBulletHelper.cpp

示例11:

// Converts a quaternion to an euler angle
core::vector3df quat_to_euler(const btQuaternion &TQuat) {
	btScalar W = TQuat.getW();
	btScalar X = TQuat.getX();
	btScalar Y = TQuat.getY();
	btScalar Z = TQuat.getZ();
	float WSquared = W * W;
	float XSquared = X * X;
	float YSquared = Y * Y;
	float ZSquared = Z * Z;

	float x = (atan2f(2.0f * (Y * Z + X * W), -XSquared - YSquared + ZSquared + WSquared));
	float y = (asinf(-2.0f * (X * Z - Y * W)));
	float z = (atan2f(2.0f * (X * Y + Z * W), XSquared - YSquared - ZSquared + WSquared));

	core::vector3df euler = core::vector3df(x, y, z);
	euler *= core::RADTODEG;
	return euler;
}
开发者ID:maroxe,项目名称:maroxe3d,代码行数:19,代码来源:utils.cpp

示例12: FromBullet

Eigen::Quaternion<float> FromBullet(const btQuaternion& q) { return Eigen::Quaternion<float>(q.getW(), q.getX(), q.getY(), q.getZ()); }
开发者ID:FutingFan,项目名称:hackstate,代码行数:1,代码来源:PhysicsLayer.cpp

示例13: addQuaternion

 void         addQuaternion(const btQuaternion& q) { addFloat(q.getX()); 
                                                addFloat(q.getY());
                                                addFloat(q.getZ()); 
                                                addFloat(q.getW());    }
开发者ID:langresser,项目名称:stk,代码行数:4,代码来源:message.hpp

示例14: fromBulletQuaternion

	Quatf fromBulletQuaternion( const btQuaternion &quat )
	{
		return ci::Quatf( quat.getX(), quat.getY(), quat.getZ(), quat.getW() );
	}
开发者ID:BanTheRewind,项目名称:Cinder-Bullet,代码行数:4,代码来源:Utilities.cpp

示例15: quaternion_to_tuple

static ERL_NIF_TERM quaternion_to_tuple(ErlNifEnv* env, btQuaternion v) {
    return enif_make_tuple4(env, enif_make_double(env, v.getX()), enif_make_double(env, v.getY()), enif_make_double(env,v.getZ()), enif_make_double(env,v.getW()));
}
开发者ID:BigDwarf,项目名称:ennui,代码行数:3,代码来源:bullet.cpp


注:本文中的btQuaternion::getZ方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。