本文整理汇总了C++中TVector3::magnitude方法的典型用法代码示例。如果您正苦于以下问题:C++ TVector3::magnitude方法的具体用法?C++ TVector3::magnitude怎么用?C++ TVector3::magnitude使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TVector3
的用法示例。
在下文中一共展示了TVector3::magnitude方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: evaluateSuperellipsoid
// Try to find the root of a superquadric using Newtons method.
bool PrimitiveSuperellipsoid::checkHit2( const TRay &ray, const float t0,
TVector3 &P0, float v0,
const float t1,
float *t, TVector3 &Q ) const {
float dt0 = t0;
float dt1 = t0 + 0.0001f * (t1 - t0);
float maxdelta = t1 - t0;
for ( int i = 0; (dt0 < t1) && (i < MAX_ITERATIONS); i++ ) {
float deltat = 0.0f;
TPoint3 P1 = ray.origin + ( ray.direction * dt1 );
float v1 = evaluateSuperellipsoid( P1 );
if ( v0 * v1 < 0.0f ) {
// Found a crossing point, go back and use normal root solving.
solveHit1( v0, P0, v1, P1, Q );
TVector3 P0 = Q - ray.origin;
*t = P0.magnitude();
return true;
}
else {
if ( fabsf(v1) < ZERO_TOLERANCE) {
Q = ray.origin + ( ray.direction * dt1 );
*t = dt1;
return true;
}
else {
if (((v0 > 0.0f) && (v1 > v0)) || ((v0 < 0.0f) && (v1 < v0)))
// We definitely failed
break;
else {
if ( v1 == v0 )
break;
else
deltat = v1 * (dt1 - dt0) / (v1 - v0);
}
}
}
if ( fabsf(deltat) > maxdelta )
break;
v0 = v1;
dt0 = dt1;
dt1 -= deltat;
}
return false;
}