34 btVector3 m_supportVertexLocal;
52 for (
int i = 0; i < 3; i++)
58 m_supportVertexLocal = triangle[i];
65 return m_supportVertexLocal;
69btVector3 btConvexTriangleMeshShape::localGetSupportingVertexWithoutMargin(
const btVector3& vec0)
const
77 vec.setValue(1, 0, 0);
87 m_stridingMesh->InternalProcessAllTriangles(&supportCallback, -aabbMax, aabbMax);
88 supVec = supportCallback.GetSupportVertexLocal();
93void btConvexTriangleMeshShape::batchedUnitVectorGetSupportingVertexWithoutMargin(
const btVector3* vectors, btVector3* supportVerticesOut,
int numVectors)
const
97 for (
int i = 0; i < numVectors; i++)
105 for (
int j = 0; j < numVectors; j++)
107 const btVector3& vec = vectors[j];
110 m_stridingMesh->InternalProcessAllTriangles(&supportCallback, -aabbMax, aabbMax);
111 supportVerticesOut[j] = supportCallback.GetSupportVertexLocal();
115btVector3 btConvexTriangleMeshShape::localGetSupportingVertex(
const btVector3& vec)
const
121 btVector3 vecnorm = vec;
134int btConvexTriangleMeshShape::getNumVertices()
const
140int btConvexTriangleMeshShape::getNumEdges()
const
145void btConvexTriangleMeshShape::getEdge(
int, btVector3&, btVector3&)
const
150void btConvexTriangleMeshShape::getVertex(
int, btVector3&)
const
155int btConvexTriangleMeshShape::getNumPlanes()
const
160void btConvexTriangleMeshShape::getPlane(btVector3&, btVector3&,
int)
const
166bool btConvexTriangleMeshShape::isInside(
const btVector3&,
btScalar)
const
172void btConvexTriangleMeshShape::setLocalScaling(
const btVector3& scaling)
174 m_stridingMesh->setScaling(scaling);
179const btVector3& btConvexTriangleMeshShape::getLocalScaling()
const
181 return m_stridingMesh->getScaling();
184void btConvexTriangleMeshShape::calculatePrincipalAxisTransform(
btTransform& principal, btVector3& inertia,
btScalar& volume)
const
194 CenterCallback() : first(
true), ref(0, 0, 0),
sum(0, 0, 0), volume(0)
210 sum += (
btScalar(0.25) * vol) * ((triangle[0] + triangle[1] + triangle[2] + ref));
215 btVector3 getCenter()
217 return (volume > 0) ?
sum / volume : ref;
232 InertiaCallback(btVector3& center) :
sum(0, 0, 0, 0, 0, 0, 0, 0, 0), center(center)
241 btVector3 a = triangle[0] - center;
242 btVector3
b = triangle[1] - center;
243 btVector3 c = triangle[2] - center;
245 for (
int j = 0; j < 3; j++)
247 for (
int k = 0; k <= j; k++)
249 i[j][k] = i[k][j] = volNeg * (
btScalar(0.1) * (a[j] * a[k] +
b[j] *
b[k] + c[j] * c[k]) +
btScalar(0.05) * (a[j] *
b[k] + a[k] *
b[j] + a[j] * c[k] + a[k] * c[j] +
b[j] * c[k] +
b[k] * c[j]));
269 CenterCallback centerCallback;
271 m_stridingMesh->InternalProcessAllTriangles(¢erCallback, -aabbMax, aabbMax);
272 btVector3 center = centerCallback.getCenter();
273 principal.setOrigin(center);
274 volume = centerCallback.getVolume();
276 InertiaCallback inertiaCallback(center);
277 m_stridingMesh->InternalProcessAllTriangles(&inertiaCallback, -aabbMax, aabbMax);
280 i.diagonalize(principal.getBasis(),
btScalar(0.00001), 20);
281 inertia.setValue(i[0][0], i[1][1], i[2][2]);
SIMD_FORCE_INLINE btVector3 localGetSupportingVertexWithoutMargin(const btVector3 &vec) const
btConvexShape Interface
@ CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE
virtual btScalar getMargin() const =0
btMatrix3x3
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SIMD_FORCE_INLINE btScalar btFabs(btScalar x)
SIMD_FORCE_INLINE btScalar btSqrt(btScalar y)
static T sum(const btAlignedObjectArray< T > &items)
SIMD_FORCE_INLINE btScalar triple(const btVector3 &v1, const btVector3 &v2) const
btVector3 GetSupportVertexLocal()
btVector3 m_supportVecLocal
LocalSupportVertexCallback(const btVector3 &supportVecLocal)
virtual void internalProcessTriangleIndex(btVector3 *triangle, int partId, int triangleIndex)
virtual void internalProcessTriangleIndex(btVector3 *triangle, int partId, int triangleIndex)=0
The btPolyhedralConvexAabbCachingShape adds aabb caching to the btPolyhedralConvexShape.
local_group_size(16, 16) .push_constant(Type b
additional_info("compositor_sum_squared_difference_float_shared") .push_constant(Type output_img float dot(value.rgb, luminance_coefficients)") .define("LOAD(value)"