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


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

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


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

示例1: btSqrt

static void M3x3getRot_ref(const btMatrix3x3 &m, btQuaternion &q)
{
	btVector3 m_el[3] = {m[0], m[1], m[2]};

	btScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z();

	btScalar temp[4];

	if (trace > btScalar(0.0))
	{
		btScalar s = btSqrt(trace + btScalar(1.0));
		temp[3] = (s * btScalar(0.5));
		s = btScalar(0.5) / s;

		temp[0] = ((m_el[2].y() - m_el[1].z()) * s);
		temp[1] = ((m_el[0].z() - m_el[2].x()) * s);
		temp[2] = ((m_el[1].x() - m_el[0].y()) * s);
	}
	else
	{
		int i = m_el[0].x() < m_el[1].y() ? (m_el[1].y() < m_el[2].z() ? 2 : 1) : (m_el[0].x() < m_el[2].z() ? 2 : 0);
		int j = (i + 1) % 3;
		int k = (i + 2) % 3;

		btScalar s = btSqrt(m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0));
		temp[i] = s * btScalar(0.5);
		s = btScalar(0.5) / s;

		temp[3] = (m_el[k][j] - m_el[j][k]) * s;
		temp[j] = (m_el[j][i] + m_el[i][j]) * s;
		temp[k] = (m_el[k][i] + m_el[i][k]) * s;
	}
	q.setValue(temp[0], temp[1], temp[2], temp[3]);
}
开发者ID:bulletphysics,项目名称:bullet3,代码行数:34,代码来源:Test_3x3getRot.cpp

示例2: Quaternion_to_btQuaternion

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

示例3: parseQuaternion

bool parseQuaternion(const Value &val, btQuaternion &retQuat) {
	if (!(val.isArray() && val.size() == 4)) return false;
	if (!val[0].isConvertibleTo(ValueType::realValue)) return false;
	if (!val[1].isConvertibleTo(ValueType::realValue)) return false;
	if (!val[2].isConvertibleTo(ValueType::realValue)) return false;
	if (!val[3].isConvertibleTo(ValueType::realValue)) return false;
	retQuat.setValue(val[0].asDouble(), val[1].asDouble(),
					 val[2].asDouble(), val[3].asDouble());
	return true;
}
开发者ID:SpexGuy,项目名称:OnlineBoardGame,代码行数:10,代码来源:AssetPack.cpp

示例4: ConvertRotationToBull

void ConvertRotationToBull(const QAngle& angles, btQuaternion& bull) {
	RadianEuler radian(angles);
	Quaternion q(radian);
	bull.setValue(q.x, q.z, -q.y, q.w);
}
开发者ID:Jcw87,项目名称:Gmod-vphysics,代码行数:5,代码来源:convert.cpp


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