public override void BatchedUnitVectorGetSupportingVertexWithoutMargin(IList<Vector3> vectors, IList<Vector4> supportVerticesOut, int numVectors) { for (int j=0;j<numVectors;j++) { Vector3 vec = vectors[j]; LocalSupportVertexCallback supportCallback = new LocalSupportVertexCallback(ref vec); Vector3 aabbMax = MathUtil.MAX_VECTOR; Vector3 aabbMin = MathUtil.MIN_VECTOR; m_stridingMesh.InternalProcessAllTriangles(supportCallback,ref aabbMin,ref aabbMax); supportVerticesOut[j] = new Vector4(supportCallback.GetSupportVertexLocal(),0); } }
public override Vector3 LocalGetSupportingVertexWithoutMargin(ref Vector3 vec0) { Vector3 supVec = Vector3.Zero; Vector3 vec = vec0; float lenSqr = vec.LengthSquared(); if (lenSqr < 0.0001f) { vec = Vector3.Right; } else { float rlen = (1.0f) / (float)System.Math.Sqrt(lenSqr); vec *= rlen; //vec.Normalize(); } LocalSupportVertexCallback supportCallback = new LocalSupportVertexCallback(ref vec); Vector3 aabbMax = new Vector3(float.MaxValue,float.MaxValue,float.MaxValue); Vector3 aabbMin = -aabbMax; m_stridingMesh.InternalProcessAllTriangles(supportCallback,ref aabbMin,ref aabbMax); supVec = supportCallback.GetSupportVertexLocal(); return supVec; }