public static GeometryModel3D newPolygon3D(HelixToolkit.Wpf.Polygon pPolygon, Color pColor, double pOffesetZ = 0) { GeometryModel3D model = new GeometryModel3D(); model.Geometry = FillPolygon(pPolygon, pOffesetZ); model.Material = new DiffuseMaterial(new SolidColorBrush(pColor)); return(model); }
public HelixToolkit.Wpf.Polygon ToHelixToolkit() { HelixToolkit.Wpf.Polygon p = new HelixToolkit.Wpf.Polygon(); foreach (HciLab.Utilities.Mathematics.Core.Vector2 v in Points) { p.Points.Add(new System.Windows.Point(v.X, v.Y)); } return(p); }
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)); }
/// <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); } }