Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }