61 bMarginIsRadius =
true;
72 FStore(radius, &margin);
73 FStore(radius, &minMargin);
74 FStore(radius, &sweepMargin);
75 bMarginIsRadius =
true;
78 PX_INLINE CapsuleV(
const aos::Vec3VArg center_,
const aos::Vec3VArg v_,
const aos::FloatVArg radius_) :
83 p0 = V3Add(center_, v_);
84 p1 = V3Sub(center_, v_);
85 FStore(radius, &margin);
86 FStore(radius, &minMargin);
87 FStore(radius, &sweepMargin);
88 bMarginIsRadius =
true;
91 PX_INLINE CapsuleV(
const PxGeometry& geom) : ConvexV(ConvexType::eCAPSULE, aos::V3Zero())
94 const PxCapsuleGeometry& capsuleGeom =
static_cast<const PxCapsuleGeometry&
>(geom);
96 const Vec3V axis = V3Scale(V3UnitX(), FLoad(capsuleGeom.halfHeight));
97 const FloatV r = FLoad(capsuleGeom.radius);
101 FStore(radius, &margin);
102 FStore(radius, &minMargin);
103 FStore(radius, &sweepMargin);
104 bMarginIsRadius =
true;
120 PX_FORCE_INLINE void initialize(
const aos::Vec3VArg _p0,
const aos::Vec3VArg _p1,
const aos::FloatVArg _radius)
126 FStore(radius, &margin);
127 FStore(radius, &minMargin);
128 FStore(radius, &sweepMargin);
129 center = V3Scale(V3Add(_p0, _p1), FHalf());
134 return aos::V3Sub(
p1,
p0);
144 return (&
p0)[1-index];
150 const VecI32V v = VecI32V_From_BoolV(con);
151 const VecI32V t = VecI32V_And(v, VecI32V_One());
152 PxI32_From_VecI32V(t, &index);
158 Vec3V offset = V3Sub(_center, center);
161 p0 = V3Add(
p0, offset);
162 p1 = V3Add(
p1, offset);
170 const FloatV dist0 = V3Dot(
p0, dir);
171 const FloatV dist1 = V3Dot(
p1, dir);
172 return V3Sel(FIsGrtr(dist0, dist1),
p0,
p1);
175 PX_FORCE_INLINE aos::Vec3V supportRelative(
const aos::Vec3VArg dir,
const aos::PxMatTransformV& aToB,
const aos::PxMatTransformV& aTobT)
const
180 const Vec3V _dir = aTobT.rotate(dir);
181 const Vec3V p = supportLocal(_dir);
183 return aToB.transform(p);
187 PX_FORCE_INLINE aos::Vec3V supportLocal(
const aos::Vec3VArg dir, PxI32& index)
const
191 const FloatV dist0 = V3Dot(
p0, dir);
192 const FloatV dist1 = V3Dot(
p1, dir);
193 const BoolV comp = FIsGrtr(dist0, dist1);
194 getIndex(comp, index);
195 return V3Sel(comp,
p0,
p1);
198 PX_FORCE_INLINE aos::Vec3V supportRelative(
const aos::Vec3VArg dir,
const aos::PxMatTransformV& aToB,
199 const aos::PxMatTransformV& aTobT, PxI32& index)
const
204 const Vec3V _dir = aTobT.rotate(dir);
206 const Vec3V p = supportLocal(_dir, index);
208 return aToB.transform(p);
212 PX_FORCE_INLINE aos::Vec3V supportLocal(aos::Vec3V& support,
const PxI32& index,
const aos::BoolV comp)
const
217 const Vec3V p = V3Sel(comp,
p0,
p1);
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39