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); }
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)); }
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); }
/// <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); } }