52 PX_INLINE IndexedTriangleT (
const IndexedTriangleT <TX>& other) { mRef[0] = other[0]; mRef[1] = other[1]; mRef[2] = other[2]; }
54 PX_INLINE T& operator[](T i) {
return mRef[i]; }
55 PX_INLINE const T& operator[](T i)
const {
return mRef[i]; }
58 PX_INLINE IndexedTriangleT <T>& operator=(
const IndexedTriangleT <TX>& i) { mRef[0]=i[0]; mRef[1]=i[1]; mRef[2]=i[2];
return *
this; }
62 PxSwap(mRef[1], mRef[2]);
67 return mRef[0] ==
id || mRef[1] ==
id || mRef[2] == id;
72 const PxVec3& p0 = verts[mRef[0]];
73 const PxVec3& p1 = verts[mRef[1]];
74 const PxVec3& p2 = verts[mRef[2]];
75 center = (p0+p1+p2)*0.33333333333333333333f;
78 float area(
const PxVec3* verts)
const
80 const PxVec3& p0 = verts[mRef[0]];
81 const PxVec3& p1 = verts[mRef[1]];
82 const PxVec3& p2 = verts[mRef[2]];
83 return ((p0-p1).cross(p0-p2)).
magnitude() * 0.5f;
86 PxU8 findEdge(T vref0, T vref1)
const
88 if(mRef[0]==vref0 && mRef[1]==vref1)
return 0;
89 else if(mRef[0]==vref1 && mRef[1]==vref0)
return 0;
90 else if(mRef[0]==vref0 && mRef[2]==vref1)
return 1;
91 else if(mRef[0]==vref1 && mRef[2]==vref0)
return 1;
92 else if(mRef[1]==vref0 && mRef[2]==vref1)
return 2;
93 else if(mRef[1]==vref1 && mRef[2]==vref0)
return 2;
98 PxU8 findEdgeCCW(T vref0, T vref1)
const
100 if(mRef[0]==vref0 && mRef[1]==vref1)
return 0;
101 else if(mRef[0]==vref1 && mRef[1]==vref0)
return 0;
102 else if(mRef[0]==vref0 && mRef[2]==vref1)
return 2;
103 else if(mRef[0]==vref1 && mRef[2]==vref0)
return 2;
104 else if(mRef[1]==vref0 && mRef[2]==vref1)
return 1;
105 else if(mRef[1]==vref1 && mRef[2]==vref0)
return 1;
109 bool replaceVertex(T oldref, T newref)
111 if(mRef[0]==oldref) { mRef[0] = newref;
return true; }
112 else if(mRef[1]==oldref) { mRef[1] = newref;
return true; }
113 else if(mRef[2]==oldref) { mRef[2] = newref;
return true; }
117 bool isDegenerate()
const
119 if(mRef[0]==mRef[1])
return true;
120 if(mRef[1]==mRef[2])
return true;
121 if(mRef[2]==mRef[0])
return true;
127 const PxVec3& p0 = verts[mRef[0]];
128 const PxVec3& p1 = verts[mRef[1]];
129 const PxVec3& p2 = verts[mRef[2]];
130 normal = ((p2 - p1).cross(p0 - p1));
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39