本文整理汇总了C++中BBox::Mins方法的典型用法代码示例。如果您正苦于以下问题:C++ BBox::Mins方法的具体用法?C++ BBox::Mins怎么用?C++ BBox::Mins使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BBox
的用法示例。
在下文中一共展示了BBox::Mins方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: a
RADENG_API bool RADENG_CALL RayIntersectsBBox(const Vec3 &_a, const Vec3 &_b, const BBox &bounds) {
Vec3 a(_a);
Vec3 b(_b);
Plane::SideType sides[2];
for (int i = 0; i < 2; ++i) {
for (int k = 0; k < 3; ++k) {
Vec3 normal(Vec3::Zero);
normal[k] = (i == 0) ? -1.f : 1.f;
Plane plane(normal, (i==0) ? -bounds.Mins()[k] : bounds.Maxs()[k]);
sides[0] = plane.Side(a, 0.f);
sides[1] = plane.Side(b, 0.f);
if (sides[0] == Plane::On)
sides[0] = sides[1];
if (sides[1] == Plane::On)
sides[1] = sides[0];
if (((sides[0] == Plane::On) || (sides[0] == Plane::Front)) && (sides[0] == sides[1]))
return false; // all on front
if (sides[0] != sides[1]) {
// cross
Vec3 mid;
plane.IntersectLineSegment(mid, a, b, 0.f);
if (sides[0] == Plane::Front) {
a = mid;
} else {
RAD_ASSERT(sides[1] == Plane::Front);
b = mid;
}
}
}
}
// ray passes through bbox
return true;
}