本文整理汇总了C++中Object3D::intersect方法的典型用法代码示例。如果您正苦于以下问题:C++ Object3D::intersect方法的具体用法?C++ Object3D::intersect怎么用?C++ Object3D::intersect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Object3D
的用法示例。
在下文中一共展示了Object3D::intersect方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: castShadowRay
//non-accelerate castShadowRay
bool RayTracer::castShadowRay(Vec3f point, Vec3f lightDir, float distanceToLight) const
{
Group *group = s->getGroup();
int numOfPrim = group->getNumber();
Object3D* instance;
Ray r(lightDir,point);
Material* material =NULL;
Hit hit(distanceToLight,material,Vec3f(1,1,1));
for(int i=0; i<numOfPrim; i++)
{
instance = group->getObject(i);
if(instance->intersect(r,hit,0) == 1) //设置tmin为EPSILON
{
return 1;
}
}
//没有相交
return 0;
}
示例2: intersectWithOverlapObject
bool Grid::intersectWithOverlapObject(const Ray & r, Hit & h, float tmin) const
{
MarchInfo mi;
bool re = initializeRayMarch ( mi, r, tmin );
if ( re == false ) {
return false;
}
int index_i, index_j, index_k;
while ( IsCellValid(mi) )
{
RayTracing_Stats::IncrementNumGridCellsTraversed();
index_i = mi.get_i();
index_j = mi.get_j();
index_k = mi.get_k();
Object3DVector & obj_array = cells[num_y * num_z * index_i + num_z * index_j + index_k].objs;
int num_objs = obj_array.getNumOfObjects();
if ( num_objs > 0 )
{
bool flag = false;
for (int i = 0; i < num_objs; ++i) {
Object3D * obj = obj_array.getObject(i);
if (obj->intersect(r, h, tmin) == true)
flag = true;
}
if ( flag ) return true;
}
mi.nextCell();
}
return false;
}