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


C++ quaternion::norm方法代码示例

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


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

示例1: exp

	quaternion exp( const quaternion& lhs ){
		float alpha = lhs.norm();
		vec3 v = normalize3( lhs.comps().xyz() );

		float sin_alpha = 0.0f;
		float cos_alpha = 0.0f;
		sincos(alpha, sin_alpha, cos_alpha);

		vec4 q_v;
		q_v.w( cos_alpha );
		q_v.xyz( sin_alpha * v );

		return quaternion(q_v);
	}
开发者ID:2007750219,项目名称:softart,代码行数:14,代码来源:quaternion.cpp

示例2: main

int main()
{
	array<double, 3> axis;
	axis[0] = 1;
	axis[1] = 0;
	axis[2] = 0;

	quaternion<double>
		q = quaternion_from_rotation(axis, 90 * deg2rad),
		qq = quaternion_from_rotation(axis, 172 * deg2rad);

	{
		const quaternion<double> conj(q.conjugate());

		assert((q + conj) == (q.scalar() * 2));

		{
			const quaternion<double> tmp(q - conj);

			assert(tmp.scalar() == 0);
			assert(tmp.vector() == (q.vector() * 2));
		}

		assert(q.norm() == conj.norm());

		CLOSE_ENOUGH((q * qq).norm(), q.norm() * qq.norm());

		assert(q == q.inverse().inverse());

		{
			quaternion<double> r(q * qq);

			//			assert((r * qq.inverse()) == q);
			//			assert((q.inverse() * r) == qq);
		}
	}

	axis[0] = 1;
	axis[1] = 0;
	axis[2] = 0;
	quaternion<double> rx = quaternion_from_rotation(axis, 90 * deg2rad);

	axis[0] = 0;
	axis[1] = 1;
	axis[2] = 0;
	quaternion<double> ry = quaternion_from_rotation(axis, 90 * deg2rad);

	axis[0] = 0;
	axis[1] = 0;
	axis[2] = 1;
	quaternion<double> rz = quaternion_from_rotation(axis, 90 * deg2rad);

	array<double, 3> vector;
	vector[0] = 1;
	vector[1] = 0;
	vector[2] = 0;

	std::cout
		<< "Orginal vector: " << vector << std::endl
		<< "Rotated around x: " << rotate_with_quaternion(vector, rx) << std::endl
		<< "Rotated around y: " << rotate_with_quaternion(vector, ry) << std::endl
		<< "Rotated around z: " << rotate_with_quaternion(vector, rz) << std::endl
		<< "Rotated around x and y: " << rotate_with_quaternion(vector, ry * rx) << std::endl
		<< "Rotated around x, y and z: " << rotate_with_quaternion(vector, rz * ry * rx) << std::endl;

	return EXIT_SUCCESS;
}
开发者ID:julien-f,项目名称:jfcpp,代码行数:67,代码来源:main.cpp

示例3: inv

	quaternion inv( const quaternion& lhs ){
		return conj(lhs) / lhs.norm();
	}
开发者ID:2007750219,项目名称:softart,代码行数:3,代码来源:quaternion.cpp

示例4: normalize

	quaternion normalize( const quaternion& lhs ){
		return lhs / lhs.norm();
	}
开发者ID:2007750219,项目名称:softart,代码行数:3,代码来源:quaternion.cpp


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