当前位置: 首页>>代码示例>>C++>>正文


C++ Box3f::isValid方法代码示例

本文整理汇总了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);
}
开发者ID:blackvladimir,项目名称:pyplasm,代码行数:32,代码来源:manipulator.cpp

示例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);
}
开发者ID:blackvladimir,项目名称:pyplasm,代码行数:10,代码来源:manipulator.cpp


注:本文中的Box3f::isValid方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。