Exemplo n.º 1
0
        public HelixToolkit.Wpf.Polygon3D ToHelixToolkit3D(double pOffset = 0)
        {
            HelixToolkit.Wpf.Polygon3D p = new HelixToolkit.Wpf.Polygon3D();
            foreach (HciLab.Utilities.Mathematics.Core.Vector2 v in Points)
            {
                p.Points.Add(new System.Windows.Media.Media3D.Point3D(v.X, v.Y, pOffset));
            }

            return(p);
        }
Exemplo n.º 2
0
        internal static MeshGeometry3D FillPolygon(HelixToolkit.Wpf.Polygon p, double pOffesetZ = 0)
        {
            List <Point3D> pts3D = new List <Point3D>();

            foreach (var point in p.Points)
            {
                pts3D.Add(new Point3D(point.X, point.Y, pOffesetZ));
            }
            HelixToolkit.Wpf.Polygon3D p3 = new HelixToolkit.Wpf.Polygon3D(pts3D);
            return(FillPolygon(p3));
        }
Exemplo n.º 3
0
        public static GeometryModel3D Rect(double pX, double pY, double pWidth, double pHeight, Color pColor, double zOffset = 0)
        {
            HelixToolkit.Wpf.Polygon3D p = new HelixToolkit.Wpf.Polygon3D();
            p.Points.Add(new Point3D(pX, pY, zOffset));
            p.Points.Add(new Point3D(pX + pWidth, pY, zOffset));
            p.Points.Add(new Point3D(pX + pWidth, pY + pHeight, zOffset));
            p.Points.Add(new Point3D(pX, pY + pHeight, zOffset));

            GeometryModel3D model = new GeometryModel3D();

            model.Geometry = PolygonMash3D.FillPolygon(p);;
            model.Material = new DiffuseMaterial(new SolidColorBrush(pColor));
            return(model);
        }
Exemplo n.º 4
0
        /// <summary>
        /// For 3D polygons
        /// </summary>
        /// <param name="pPolygon"></param>
        /// <returns></returns>
        internal static MeshGeometry3D FillPolygon(HelixToolkit.Wpf.Polygon3D pPolygon)
        {
            try
            {
                HelixToolkit.Wpf.MeshBuilder meshBuilder = new HelixToolkit.Wpf.MeshBuilder(false, false);

                HelixToolkit.Wpf.Polygon polygon = pPolygon.Flatten();

                Int32Collection triangleIndexes = HelixToolkit.Wpf.CuttingEarsTriangulator.Triangulate(polygon.Points);

                meshBuilder.Append(pPolygon.Points, triangleIndexes);
                return(meshBuilder.ToMesh());
            }
            catch (System.InvalidOperationException exp)
            {
                return(null);
            }
        }