public static MeshGeometry3D ToGeometry3D(this Vector vector, Point point = new Point())
        {
            var meshBuilder = new MeshBuilder();

            var startPoint = point.ToPoint3D();
            var endPoint   = point.ToPoint3D() + vector.ToVector3D();

            meshBuilder.AddArrow(startPoint, endPoint, 0.1);

            return(meshBuilder.ToMesh());
        }
        public static MeshGeometry3D ToGeometry3D(this Point point)
        {
            var meshBuilder = new MeshBuilder();

            meshBuilder.AddSphere(point.ToPoint3D(), 0.1);
            return(meshBuilder.ToMesh());
        }
 public static void AddQuad(this MeshBuilder bulder, Point p1, Point p2, Point p3, Point p4)
 {
     bulder.AddQuad(p1.ToPoint3D(), p2.ToPoint3D(), p3.ToPoint3D(), p4.ToPoint3D());
 }
 /// <summary>
 /// Adds the triangle.
 /// </summary>
 /// <param name="bulder">The bulder.</param>
 /// <param name="p1">The p1.</param>
 /// <param name="p2">The p2.</param>
 /// <param name="p3">The p3.</param>
 public static void AddTriangle(this MeshBuilder bulder, Point p1, Point p2, Point p3)
 {
     bulder.AddTriangle(p1.ToPoint3D(), p2.ToPoint3D(), p3.ToPoint3D());
 }
Beispiel #5
0
        public static Tuple<Point, Point> GetControlPoints_Middle(Point end1, Point end2, Point end3, double percentAlong12 = .25, double percentAlong23 = .25)
        {
            // Just use the 3D overload
            var retVal = GetControlPoints_Middle(end1.ToPoint3D(), end2.ToPoint3D(), end3.ToPoint3D(), percentAlong12, percentAlong23);

            // Convert the response back to 2D
            return Tuple.Create(retVal.Item1.ToPoint2D(), retVal.Item2.ToPoint2D());
        }
        private void Test2Segments2D(Point end1, Point end2, Point end3)
        {
            // Control points for 2
            var controlPoints = BezierUtil.GetControlPoints_Middle(end1, end2, end3, trkSingleLine2Segments2DPercent.Value, trkSingleLine2Segments2DPercent.Value);

            Point3D[] allEndPoints = new[] { end1, end2, end3 }.Select(o => o.ToPoint3D()).ToArray();

            var segment12 = new BezierSegment3D(0, 1, new[] { end1.ToPoint3D(), controlPoints.Item1.ToPoint3D() }, allEndPoints);
            var segment23 = new BezierSegment3D(1, 2, new[] { controlPoints.Item2.ToPoint3D(), end3.ToPoint3D() }, allEndPoints);

            // Calculate the beziers
            Point3D[] bezierPoints12 = BezierUtil.GetPoints(100, segment12);
            Point3D[] bezierPoints23 = BezierUtil.GetPoints(100, segment23);

            #region Draw

            PrepFor2D();

            foreach (var bezier in new[] { Tuple.Create(segment12, bezierPoints12), Tuple.Create(segment23, bezierPoints23) })
            {
                // Main Line
                for (int cntr = 0; cntr < bezier.Item2.Length - 1; cntr++)
                {
                    AddLine(bezier.Item2[cntr].ToPoint2D(), bezier.Item2[cntr + 1].ToPoint2D(), _mainLineB, 3);
                }

                if (chkShowDots.IsChecked.Value)
                {
                    foreach (Point3D point in bezier.Item2)
                    {
                        AddDot(point.ToPoint2D(), _mainLineB, 8);
                    }

                    // Control Lines
                    Point[] allPoints = UtilityCore.Iterate<Point3D>(bezier.Item1.EndPoint0, bezier.Item1.ControlPoints, bezier.Item1.EndPoint1).Select(o => o.ToPoint2D()).ToArray();

                    for (int cntr = 0; cntr < allPoints.Length - 1; cntr++)
                    {
                        AddLine(allPoints[cntr], allPoints[cntr + 1], _controlLineB, 1);
                    }

                    for (int cntr = 0; cntr < bezier.Item1.ControlPoints.Length; cntr++)
                    {
                        AddDot(bezier.Item1.ControlPoints[cntr].ToPoint2D(), _controlPointB);
                    }
                }
            }

            // End Points
            if (chkShowDots.IsChecked.Value)
            {
                AddDot(end1, _endPointB);
                AddDot(end2, _endPointB);
                AddDot(end3, _endPointB);
            }

            #endregion
        }