public static void SetPosition <TVertex2>(ref TVertex2 vert, ref Vector3 pos) where TVertex2 : struct, IVertex { IPositionVertex ipv = vert as IPositionVertex; if (ipv != null) { ipv.SetPosition(pos); vert = (TVertex2)ipv; } }
public static Vector3 GetPosition <TVertex2>(ref TVertex2 vertex) where TVertex2 : struct, IVertex { //if (vertex is IPositionVertex) // return ((IPositionVertex)vertex).GetPosition(); IPositionVertex ipv = vertex as IPositionVertex; if (ipv != null) { return(ipv.GetPosition()); } return(Vector3.Zero); }
public Mesh <Vertex3D> GenerateCentroidPointMesh() { // Doesn't rely on topology int numTriangles = indices.Length / 3; Vertex3D[] centroidVerts = new Vertex3D[numTriangles]; Vertex3D centroidVertex = new Vertex3D(); Mesh <Vertex3D> centroidMesh = new Mesh <Vertex3D>(centroidVerts); int triangleIndex = 0; for (int i = 0; i < numTriangles; ++i) { Vector3 centroid = Topology.CalculateCentroid(i); IPositionVertex ipv = centroidVertex as IPositionVertex; if (ipv != null) { ipv.SetPosition(centroid); } centroidMesh.vertices[triangleIndex++] = (Vertex3D)ipv; } return(centroidMesh); }