Differential D1739 Diff 5899 extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp
Changeset View
Changeset View
Standalone View
Standalone View
extern/bullet2/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp
| Show First 20 Lines • Show All 187 Lines • ▼ Show 20 Lines | case 2: | ||||
| btScalar angle2 = 0; | btScalar angle2 = 0; | ||||
| btScalar ang4 = 0.f; | btScalar ang4 = 0.f; | ||||
| btVector3 calculatedEdge = edgeCrossA.cross(edgeCrossB); | btVector3 calculatedEdge = edgeCrossA.cross(edgeCrossB); | ||||
| btScalar len2 = calculatedEdge.length2(); | btScalar len2 = calculatedEdge.length2(); | ||||
| btScalar correctedAngle(0); | btScalar correctedAngle(0); | ||||
| btVector3 calculatedNormalB = normalA; | //btVector3 calculatedNormalB = normalA; | ||||
| bool isConvex = false; | bool isConvex = false; | ||||
| if (len2<m_triangleInfoMap->m_planarEpsilon) | if (len2<m_triangleInfoMap->m_planarEpsilon) | ||||
| { | { | ||||
| angle2 = 0.f; | angle2 = 0.f; | ||||
| ang4 = 0.f; | ang4 = 0.f; | ||||
| } else | } else | ||||
| { | { | ||||
| calculatedEdge.normalize(); | calculatedEdge.normalize(); | ||||
| btVector3 calculatedNormalA = calculatedEdge.cross(edgeCrossA); | btVector3 calculatedNormalA = calculatedEdge.cross(edgeCrossA); | ||||
| calculatedNormalA.normalize(); | calculatedNormalA.normalize(); | ||||
| angle2 = btGetAngle(calculatedNormalA,edgeCrossA,edgeCrossB); | angle2 = btGetAngle(calculatedNormalA,edgeCrossA,edgeCrossB); | ||||
| ang4 = SIMD_PI-angle2; | ang4 = SIMD_PI-angle2; | ||||
| btScalar dotA = normalA.dot(edgeCrossB); | btScalar dotA = normalA.dot(edgeCrossB); | ||||
| ///@todo: check if we need some epsilon, due to floating point imprecision | ///@todo: check if we need some epsilon, due to floating point imprecision | ||||
| isConvex = (dotA<0.); | isConvex = (dotA<0.); | ||||
| correctedAngle = isConvex ? ang4 : -ang4; | correctedAngle = isConvex ? ang4 : -ang4; | ||||
| btQuaternion orn2(calculatedEdge,-correctedAngle); | |||||
| calculatedNormalB = btMatrix3x3(orn2)*normalA; | |||||
| } | } | ||||
| //alternatively use | //alternatively use | ||||
| //btVector3 calculatedNormalB2 = quatRotate(orn,normalA); | //btVector3 calculatedNormalB2 = quatRotate(orn,normalA); | ||||
| ▲ Show 20 Lines • Show All 615 Lines • Show Last 20 Lines | |||||