public override Vector3 LocalGetSupportingVertexWithoutMargin(Vector3 vec0) { Vector3 supVec = new Vector3(); Vector3 vec = vec0; float lenSqr = vec.LengthSquared(); if (lenSqr < 0.0001f) { vec = new Vector3(1, 0, 0); } else { float rlen = 1f / (float)Math.Sqrt(lenSqr); vec *= rlen; } LocalSupportVertexCallback supportCallback = new LocalSupportVertexCallback(vec); Vector3 aabbMax = new Vector3(1e30f, 1e30f, 1e30f); _stridingMesh.InternalProcessAllTriangles(supportCallback, -aabbMax, aabbMax); supVec = supportCallback.SupportVertexLocal; return(supVec); }
public override void BatchedUnitVectorGetSupportingVertexWithoutMargin(Vector3[] vectors, Vector3[] supportVerticesOut) { //use 'w' component of supportVerticesOut? /*{ * for (int i = 0; i < numVectors; i++) * { * supportVerticesOut[i][3] = -1e30f; * } * }*/ for (int j = 0; j < vectors.Length; j++) { Vector3 vec = vectors[j]; LocalSupportVertexCallback supportCallback = new LocalSupportVertexCallback(vec); Vector3 aabbMax = new Vector3(1e30f, 1e30f, 1e30f); _stridingMesh.InternalProcessAllTriangles(supportCallback, -aabbMax, aabbMax); supportVerticesOut[j] = supportCallback.SupportVertexLocal; } }
public override void BatchedUnitVectorGetSupportingVertexWithoutMargin(Vector3[] vectors, Vector3[] supportVerticesOut) { //use 'w' component of supportVerticesOut? /*{ for (int i = 0; i < numVectors; i++) { supportVerticesOut[i][3] = -1e30f; } }*/ for (int j = 0; j < vectors.Length; j++) { Vector3 vec = vectors[j]; LocalSupportVertexCallback supportCallback = new LocalSupportVertexCallback(vec); Vector3 aabbMax = new Vector3(1e30f, 1e30f, 1e30f); _stridingMesh.InternalProcessAllTriangles(supportCallback, -aabbMax, aabbMax); supportVerticesOut[j] = supportCallback.SupportVertexLocal; } }
public override Vector3 LocalGetSupportingVertexWithoutMargin(Vector3 vec0) { Vector3 supVec = new Vector3(); Vector3 vec = vec0; float lenSqr = vec.LengthSquared(); if (lenSqr < 0.0001f) { vec = new Vector3(1, 0, 0); } else { float rlen = 1f / (float)Math.Sqrt(lenSqr); vec *= rlen; } LocalSupportVertexCallback supportCallback = new LocalSupportVertexCallback(vec); Vector3 aabbMax = new Vector3(1e30f, 1e30f, 1e30f); _stridingMesh.InternalProcessAllTriangles(supportCallback, -aabbMax, aabbMax); supVec = supportCallback.SupportVertexLocal; return supVec; }