本文整理汇总了C++中quaternion::comps方法的典型用法代码示例。如果您正苦于以下问题:C++ quaternion::comps方法的具体用法?C++ quaternion::comps怎么用?C++ quaternion::comps使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类quaternion
的用法示例。
在下文中一共展示了quaternion::comps方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: log
quaternion log( const quaternion& lhs ){
float alpha = acos(lhs.w);
if( equal( std::abs(alpha), 1.0f ) ){
return lhs;
}
vec3 new_v = normalize3( lhs.comps().xyz() );
return quaternion(alpha*new_v[0], alpha*new_v[1], alpha*new_v[2], 0.0f);
}
示例2: slerp
quaternion slerp( const quaternion& src, const quaternion& dest, float t )
{
float cos_omega = dot_prod4(src.comps(), dest.comps());
vec4 near_dest_v = dest.comps() * sign(cos_omega);
cos_omega = abs(cos_omega);
float k0(0.0f), k1(0.0f);
if( equal(cos_omega, 1.0f) ){
k0 = 1.0f - t;
k1 = t;
}else{
float sin_omega = sqrt(1.0f - cos_omega*cos_omega);
float omega = atan2(sin_omega, cos_omega);
float inv_sin_omega = 1.0f / sin_omega;
k0 = sin( (1.0f - t) * omega ) * inv_sin_omega;
k1 = sin( t * omega ) * inv_sin_omega;
}
return quaternion( src.comps() * k0 + near_dest_v * k1);
}
示例3: 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);
}
示例4: quaternion
quaternion operator*( const quaternion& q, float scalar )
{
return quaternion( q.comps() * scalar );
}