Пример #1
0
 public override void CreateDisplayedGeometries(DynaShapeDisplay display, List <Node> allNodes)
 {
     display.DrawLine(
         allNodes[NodeIndices[0]].Position,
         allNodes[NodeIndices[1]].Position,
         Color);
 }
Пример #2
0
        public override void CreateDisplayedGeometries(DynaShapeDisplay display, List <Node> allNodes)
        {
            List <Triple> vertices = new List <Triple>();

            for (int i = 0; i < NodeCount; i++)
            {
                vertices.Add(allNodes[NodeIndices[i]].Position);
            }
            display.DrawPolyline(vertices, Color, Loop);
        }
Пример #3
0
 public virtual void CreateDisplayedGeometries(DynaShapeDisplay display, List <Node> allNodes)
 {
 }
Пример #4
0
        public override void CreateDisplayedGeometries(DynaShapeDisplay display, List <Node> allNodes)
        {
            //======================================================================
            // Compute vertex normals by averaging normals of surrounding faces
            //======================================================================

            Triple[] vertexNormals = new Triple[NodeCount];

            foreach (IndexGroup face in faces)
            {
                Triple A = allNodes[NodeIndices[face.A]].Position;
                Triple B = allNodes[NodeIndices[face.B]].Position;
                Triple C = allNodes[NodeIndices[face.C]].Position;

                Triple n = (B - A).Cross(C - A).Normalise();

                vertexNormals[face.A] += n;
                vertexNormals[face.B] += n;
                vertexNormals[face.C] += n;

                if (face.D == uint.MaxValue)
                {
                    continue;
                }

                Triple D = allNodes[NodeIndices[face.D]].Position;

                n = (C - A).Cross(D - A).Normalise();

                vertexNormals[face.A] += n;
                vertexNormals[face.C] += n;
                vertexNormals[face.D] += n;
            }

            for (int i = 0; i < NodeCount; i++)
            {
                vertexNormals[i] = vertexNormals[i].Normalise();
            }


            //===============================================================
            // Render mesh triangles, using vertex normals computed above
            //===============================================================

            MeshGeometry3D meshGeometry = new MeshGeometry3D()
            {
                Positions = new Vector3Collection(),
                Normals   = new Vector3Collection(),
                Indices   = this.meshIndices,
            };

            for (int i = 0; i < NodeCount; i++)
            {
                meshGeometry.Positions.Add(allNodes[NodeIndices[i]].Position.ToVector3());
                meshGeometry.Normals.Add(vertexNormals[i].ToVector3());
            }

            display.AddMeshModel(
                new MeshGeometryModel3D
            {
                Geometry = meshGeometry,
                Material = new PhongMaterial {
                    DiffuseColor = Color
                },
            });
        }
Пример #5
0
 public override void CreateDisplayedGeometries(DynaShapeDisplay display, List <Node> allNodes)
 {
     Triple center = allNodes[NodeIndices[0]].Position;
 }
Пример #6
0
 public override void CreateDisplayedGeometries(DynaShapeDisplay display, List <Node> allNodes)
 {
     display.DrawText(Text, allNodes[NodeIndices[0]].Position);
 }