Vec3f operator*(const Quaternion &quat, const Vec3f &vec)
{
	Vec3f quatVec(quat.x, quat.y, quat.z);
	Vec3f uv(quatVec.Cross(vec));
	Vec3f uuv(quatVec.Cross(uv));
	uv *= 2.0f * quat.w;
	uuv *= 2.0f;

	return vec + uv + uuv;
}
示例#2
0
void CQuater::VertMult(CVertex& v) {
	CVertex uv(x, y, z);
	CVertex uuv(x, y, z);
	uv.CrossMult(v);
	uuv.CrossMult(uv);
	uv.MultNum(2.0f * w);
	uuv.MultNum(2.0f);
	v += uv;
	v += uuv;
}