예제 #1
0
        public BezierPatchForeignEdge(ForeignShell parent, ControlPoint[] points, int index)
            : base(parent)
        {
            Debug.Assert(points != null);

            NurbsData data = new NurbsData(4, false, false, new Knot[] { new Knot(0, 4), new Knot(1, 4) });

            nurbsCurve = NurbsCurve.CreateFromControlPoints(data, points);
            this.index = index;
        }
예제 #2
0
        public BezierPatchForeignFace(ForeignShell parent, ControlPoint[,] vertices)
            : base(parent)
        {
            Debug.Assert(vertices != null);
            this.vertices = vertices;

            NurbsData dataU = new NurbsData(4, false, false, new Knot[] { new Knot(0, 4), new Knot(1, 4) });
            NurbsData dataV = new NurbsData(4, false, false, new Knot[] { new Knot(0, 4), new Knot(1, 4) });

            surface = NurbsSurface.Create(dataU, dataV, vertices);
        }
예제 #3
0
        private Point GetFivePointNurbsAverage(int[,] indices)
        {
            var knots = new Knot[] {
                new Knot(0, 4),
                new Knot(1, 4)
            };

            var controlPoints = new ControlPoint[] {
                new ControlPoint(Point.Create(tabAngles[indices[0, 0]][indices[0, 1]], GetSpanAt(indices[0, 0], indices[0, 1]), 0), 1),
                new ControlPoint(Point.Create(tabAngles[indices[1, 0]][indices[1, 1]], GetSpanAt(indices[1, 0], indices[1, 1]), 0), 1),
                new ControlPoint(Point.Create(tabAngles[indices[2, 0]][indices[2, 1]], GetSpanAt(indices[2, 0], indices[2, 1]), 0), 1),
                new ControlPoint(Point.Create(tabAngles[indices[3, 0]][indices[3, 1]], GetSpanAt(indices[3, 0], indices[3, 1]), 0), 1),
                new ControlPoint(Point.Create(tabAngles[indices[4, 0]][indices[4, 1]], GetSpanAt(indices[4, 0], indices[4, 1]), 0), 1)
            };

            NurbsData  data  = new NurbsData(5, false, false, knots);
            NurbsCurve curve = NurbsCurve.CreateFromControlPoints(data, controlPoints);

            Point midpoint = curve.Evaluate(0.5).Point;

            return(midpoint);
        }
        private Point GetFivePointNurbsAverage(int[,] indices)
        {
            var knots = new Knot[] {
                        new Knot(0, 4),
                        new Knot(1, 4)
                    };

            var controlPoints = new ControlPoint[] {
                        new ControlPoint(Point.Create(tabAngles[indices[0,0]][indices[0,1]], GetSpanAt(indices[0,0], indices[0,1]),0), 1),
                        new ControlPoint(Point.Create(tabAngles[indices[1,0]][indices[1,1]], GetSpanAt(indices[1,0], indices[1,1]),0), 1),
                        new ControlPoint(Point.Create(tabAngles[indices[2,0]][indices[2,1]], GetSpanAt(indices[2,0], indices[2,1]),0), 1),
                        new ControlPoint(Point.Create(tabAngles[indices[3,0]][indices[3,1]], GetSpanAt(indices[3,0], indices[3,1]),0), 1),
                        new ControlPoint(Point.Create(tabAngles[indices[4,0]][indices[4,1]], GetSpanAt(indices[4,0], indices[4,1]),0), 1)
                    };

            NurbsData data = new NurbsData(5, false, false, knots);
            NurbsCurve curve = NurbsCurve.CreateFromControlPoints(data, controlPoints);

            Point midpoint = curve.Evaluate(0.5).Point;
            return midpoint;
        }
        public BezierPatchForeignFace(ForeignShell parent, ControlPoint[,] vertices)
            : base(parent)
        {
            Debug.Assert(vertices != null);
            this.vertices = vertices;

            NurbsData dataU = new NurbsData(4, false, false, new Knot[] { new Knot(0, 4), new Knot(1, 4) });
            NurbsData dataV = new NurbsData(4, false, false, new Knot[] { new Knot(0, 4), new Knot(1, 4) });

            surface = NurbsSurface.Create(dataU, dataV, vertices);
        }
        public BezierPatchForeignEdge(ForeignShell parent, ControlPoint[] points, int index)
            : base(parent)
        {
            Debug.Assert(points != null);

            NurbsData data = new NurbsData(4, false, false, new Knot[] { new Knot(0, 4), new Knot(1, 4) });
            nurbsCurve = NurbsCurve.CreateFromControlPoints(data, points);
            this.index = index;
        }