本文整理汇总了C++中OBB::getCollisionModel方法的典型用法代码示例。如果您正苦于以下问题:C++ OBB::getCollisionModel方法的具体用法?C++ OBB::getCollisionModel怎么用?C++ OBB::getCollisionModel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OBB
的用法示例。
在下文中一共展示了OBB::getCollisionModel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: computeIntersection
int OBBIntTool::computeIntersection(OBB & box0, OBB & box1,SReal alarmDist,SReal contactDist,OutputVector* contacts){
// OBB::Real r02 = box0.extent(0)* box0.extent(0) + box0.extent(1)* box0.extent(1) + box0.extent(2)* box0.extent(2);
// OBB::Real r12 = box1.extent(0)* box1.extent(0) + box1.extent(1)* box1.extent(1) + box1.extent(2)* box1.extent(2);
// OBB::Real r0 = helper::rsqrt(r02);
// OBB::Real r1 = helper::rsqrt(r12);
// if((box0.center() - box1.center()).norm2() > r02 + 2*r0*r1 + r12){
// return 0;
// }
IntrOBBOBB intr(box0,box1);
//SReal max_time = helper::rsqrt((alarmDist * alarmDist)/((box1.lvelocity() - box0.lvelocity()).norm2()));
if(/*intr.Find(max_time,box0.lvelocity(),box1.lvelocity())*/intr.Find(alarmDist)){
Vector3 P0P1(intr.pointOnSecond() - intr.pointOnFirst());
OBB::Real dist2 = P0P1.norm2();
if((!intr.colliding()) && dist2 > alarmDist * alarmDist)
return 0;
assert((!intr.colliding()) || (P0P1.cross(intr.separatingAxis()).norm2() < IntrUtil<SReal>::ZERO_TOLERANCE()));
contacts->resize(contacts->size()+1);
DetectionOutput *detection = &*(contacts->end()-1);
if((P0P1.cross(intr.separatingAxis()).norm2() < IntrUtil<SReal>::ZERO_TOLERANCE())){
detection->normal = intr.separatingAxis();//separatingAxis is normalized while P0P1 is not
}
else{
detection->normal = P0P1;
detection->normal.normalize();
}
detection->point[0] = intr.pointOnFirst();
detection->point[1] = intr.pointOnSecond();
if(intr.colliding())
detection->value = -helper::rsqrt(dist2) - contactDist;
else
detection->value = helper::rsqrt(dist2) - contactDist;
detection->elem.first = box0;
detection->elem.second = box1;
detection->id = (box0.getCollisionModel()->getSize() > box1.getCollisionModel()->getSize()) ? box0.getIndex() : box1.getIndex();
return 1;
}
return 0;
}