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


C++ float3::ptr方法代码示例

本文整理汇总了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
}
开发者ID:truongascii,项目名称:MathGeoLib,代码行数:11,代码来源:float4.cpp

示例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
}
开发者ID:Garfield-Chen,项目名称:tng,代码行数:11,代码来源:Quat.cpp

示例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
}
开发者ID:truongascii,项目名称:MathGeoLib,代码行数:34,代码来源:float4.cpp

示例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
}
开发者ID:Garfield-Chen,项目名称:tng,代码行数:15,代码来源:Quat.cpp


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