本文整理汇总了C++中Plane::GetD方法的典型用法代码示例。如果您正苦于以下问题:C++ Plane::GetD方法的具体用法?C++ Plane::GetD怎么用?C++ Plane::GetD使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Plane
的用法示例。
在下文中一共展示了Plane::GetD方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IntersectingSegmentAgainstPlane
bool BasicPrimitiveTests::IntersectingSegmentAgainstPlane(const LineSegment & segment, const Plane & plane, float & rtn_t)
{
/*
Main Idea:
-> Subsitutes line equation into plane to find intersection
-> Tests if intersection is within segment endpoints
Let:
-> Line Segment S:
-> S(t) = A + t * (B-A)
-> for 0 <= t <= 1
-> Plane P:
-> dot(n, X) = d
Solve for "t" of intersection:
-> t = ( d - dot(n, A) / dot(n, B-A) )
-> Return intersection only if:
-> 0 <= t <= 1
*/
rtn_t = ( plane.GetD() - plane.GetNormal().dot(segment.GetPointA()) ) / plane.GetNormal().dot(segment.GetPointB() - segment.GetPointA());
return (rtn_t <= 1.0f && rtn_t >= 0.0f);
}
示例2: GetIntersection
bool Ray::GetIntersection(const Plane &plane, float &t) const
{
real denom = glm::dot(plane.GetNormal(), mDirection);
if(!denom) {
return false;
}
real numer = -(glm::dot(plane.GetNormal(), mOrigin) + plane.GetD());
t = numer / denom;
if(t >= 0) {
return true;
}
return false;
}