本文整理汇总了C++中math::Vector3::Cross方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector3::Cross方法的具体用法?C++ Vector3::Cross怎么用?C++ Vector3::Cross使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类math::Vector3
的用法示例。
在下文中一共展示了Vector3::Cross方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckIntersection
// Checks if the ray intersects with a triangle defined by points p1, p2, p3
// Returns true if it intersects and the 't' distace of the intersection point
// from the ray origin
bool Ray::CheckIntersection(const Vector3 &p1, const Vector3 &p2, const Vector3 &p3, float &t)
{
Math::Vector3 vecAB = p2 - p1;
Math::Vector3 vecAC = p3 - p1;
Math::Vector3 cross;
cross = mDirection.Cross(vecAC);
float det = vecAB.Dot(cross);
/*
if(cull && det < 0.0001f)
{
return false;
}
else
*/
if(det < 0.0001f && det > -0.0001f)
return false;
Math::Vector3 rayPointVec = mOrigin - p1;
float test1 = rayPointVec.Dot(cross);
if(test1 < 0.0f || test1 > det)
return false;
Math::Vector3 cross2;
cross2 = rayPointVec.Cross(vecAB);
float test2 = mDirection.Dot(cross2);
if(test2 < 0.0f || test1 + test2 > det)
return false;
float inverseDet = 1.0f / det;
t = vecAC.Dot(cross2);
t *= inverseDet;
return true;
}