本文整理汇总了C++中Box3f::isValid方法的典型用法代码示例。如果您正苦于以下问题:C++ Box3f::isValid方法的具体用法?C++ Box3f::isValid怎么用?C++ Box3f::isValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Box3f
的用法示例。
在下文中一共展示了Box3f::isValid方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: canManipulate
bool Manipulator::canManipulate(Ray3f ray,Box3f box,Mat4f* T)
{
//nothing to do
if (!box.isValid())
return false;
Vec3f size=box.size();
Mat4f Direct=(*T) * getTransformationToBox(box);
Mat4f Inverse=Direct.invert();
// the ray is in world coordinate
Vec3f P1=Inverse * (ray.origin );
Vec3f P2=Inverse * (ray.origin+ray.dir);
// should be the unit bounding ball not the bounding box, but seems good enough (probably better)
// is objects does not overlap too much!
float epsilon=1e-4f;
Box3f unit_box(
Vec3f(
size[0]?-1:-epsilon,
size[1]?-1:-epsilon,
size[2]?-1:-epsilon),
Vec3f(
size[0]?+1:+epsilon,
size[1]?+1:+epsilon,
size[2]?+1:+epsilon));
float tmin,tmax;
return (Ray3f(P1,P2-P1).intersectBox(tmin,tmax,unit_box) && tmin>0);
}
示例2: setObject
void Manipulator::setObject(Box3f box,Mat4f* T)
{
this->T=T;
this->box=box;
this->ref=INVALID;
this->bRunning=false;
if (box.isValid())
this->T_to_box=getTransformationToBox(box);
}