本文整理汇总了C++中Float3::Cross方法的典型用法代码示例。如果您正苦于以下问题:C++ Float3::Cross方法的具体用法?C++ Float3::Cross怎么用?C++ Float3::Cross使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Float3
的用法示例。
在下文中一共展示了Float3::Cross方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
bool RayCastTriangle(const Float3& vStart,const Float3& vDir,const Float3& v0,const Float3& v1,const Float3& v2,float& fMaxDistance)
{
Float3 edge1 = v1 - v0;
Float3 edge2 = v2 - v0;
Float3 pvec = vDir.Cross(edge2);
float det = edge1.Dot( pvec );
float u, v, t;
Float3 tvec;
if(det > 0){
tvec = vStart - v0;
}else{
tvec = v0 - vStart;
det = -det;
}
u = tvec.Dot(pvec);
if(u<0.0f||u>det)
return false;
Float3 qvec = tvec.Cross(edge1);
v = vDir.Dot(qvec);
if(v<0.0f||u+v>det)
return false;
t = edge2.Dot(qvec)/det;
if(t<0.0f||t>fMaxDistance)
return false;
fMaxDistance = t;
//nor = cross(edge1,edge2);
return true;
};