本文整理汇总了C++中float3::ptr方法的典型用法代码示例。如果您正苦于以下问题:C++ float3::ptr方法的具体用法?C++ float3::ptr怎么用?C++ float3::ptr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类float3
的用法示例。
在下文中一共展示了float3::ptr方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: y
float4::float4(const float3 &xyz, float w_)
#if !defined(MATH_AUTOMATIC_SSE) || !defined(MATH_SSE)
// Best: 5.761 nsecs / 15.872 ticks, Avg: 6.237 nsecs, Worst: 7.681 nsecs
:x(xyz.x), y(xyz.y), z(xyz.z), w(w_)
#endif
{
#if defined(MATH_AUTOMATIC_SSE) && defined(MATH_SSE)
// Best: 1.536 nsecs / 4.032 ticks, Avg: 1.540 nsecs, Worst: 1.920 nsecs
v = load_vec3(xyz.ptr(), w_);
#endif
}
示例2: Transform
float3 MUST_USE_RESULT Quat::Transform(const float3 &vec) const
{
assume2(this->IsNormalized(), *this, this->LengthSq());
#if defined(MATH_AUTOMATIC_SSE) && defined(MATH_SSE)
return float4(quat_transform_vec4(q, load_vec3(vec.ptr(), 0.f))).xyz();
#else
///\todo Optimize/benchmark the scalar path not to generate a matrix!
float3x3 mat = this->ToFloat3x3();
return mat * vec;
#endif
}
示例3: units
/** dst = A x B - Apply the diagonal rule to derive the standard cross product formula:
\code
|a cross b| = |a||b|sin(alpha)
i j k i j k units (correspond to x,y,z)
a.x a.y a.z a.x a.y a.z vector a (this)
b.x b.y b.z b.x b.y b.z vector b
-a.z*b.y*i -a.x*b.z*j -a.y*b.x*k a.y*b.z*i a.z*b.x*j a.x*b.y*k result
Add up the results:
x = a.y*b.z - a.z*b.y
y = a.z*b.x - a.x*b.z
z = a.x*b.y - a.y*b.x
\endcode
Cross product is anti-commutative, i.e. a x b == -b x a.
It distributes over addition, meaning that a x (b + c) == a x b + a x c,
and combines with scalar multiplication: (sa) x b == a x (sb).
i x j == -(j x i) == k,
(j x k) == -(k x j) == i,
(k x i) == -(i x k) == j. */
float4 float4::Cross3(const float3 &rhs) const
{
#if defined(MATH_AUTOMATIC_SSE) && defined(MATH_SSE)
return float4(cross_ps(v, load_vec3(rhs.ptr(), 0.f)));
#else
float4 dst;
dst.x = y * rhs.z - z * rhs.y;
dst.y = z * rhs.x - x * rhs.z;
dst.z = x * rhs.y - y * rhs.x;
dst.w = 0.f;
return dst;
#endif
}
示例4: SetFromAxisAngle
void Quat::SetFromAxisAngle(const float3 &axis, float angle)
{
#if defined(MATH_AUTOMATIC_SSE) && defined(MATH_SSE)
SetFromAxisAngle(load_vec3(axis.ptr(), 0.f), angle);
#else
assume1(axis.IsNormalized(), axis);
assume1(MATH_NS::IsFinite(angle), angle);
float sinz, cosz;
SinCos(angle*0.5f, sinz, cosz);
x = axis.x * sinz;
y = axis.y * sinz;
z = axis.z * sinz;
w = cosz;
#endif
}