public ActionResult Index(BezierCurveModel model) { try { if (ModelState.IsValid) { IBezierCurve cubicBezierCurve = CurveFactory.CreateCubicBezierCurve(); Point[] interMediapoints = new Point[] { new Point { X = model.pointP1_X, Y = model.pointP1_Y }, new Point { X = model.pointP2_X, Y = model.pointP2_Y }, new Point { X = model.pointP3_X, Y = model.pointP3_Y }, new Point { X = model.pointP4_X, Y = model.pointP4_Y } }; PointF[] result = Curves.BezierCurve(cubicBezierCurve, interMediapoints, 1 / model.interval); model.result = ConvertArrayToString(result); } return(View(model)); } catch (Exception ex) { throw new Exception("Failed to calculate Bezier Curve.", ex); } }
public void TestMethod1() { IBezierCurve cubicBezierCurve = CurveFactory.CreateCubicBezierCurve(); float interval = 10; Point[] interMediapoints = new Point[] { new Point { X = 0, Y = 0 }, new Point { X = 1, Y = 2 }, new Point { X = 2, Y = 2 }, new Point { X = 4, Y = 0 } }; PointF[] curvePoints = Curves.BezierCurve(cubicBezierCurve, interMediapoints, 1 / interval); Assert.IsTrue(curvePoints.Length == interval); }
public void Create_Cubic_Bezier_Curve() { // arrange var p0 = new Point(100, 100); var p1 = new Point(50, 120); var p2 = new Point(50, 280); var p3 = new Point(300, 300); var intervals = 10; // act ICurve sut = CurveFactory.CreateCubicBezierCurve(p0, p1, p2, p3, intervals); //assert // there should be 1 more point than intervals defined. Assert.Equal(intervals + 1, sut.Points.Length); // write out the points to the test runner output for (var ndx = 0; ndx < sut.Points.Length; ndx++) { _output.WriteLine($"X = {sut.Points[ndx].X}, Y = {sut.Points[ndx].Y}"); } }
static void Main(string[] args) { var run = true; while (run) { Console.Write("Bezier Test> "); var input = Console.ReadLine().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); Parser.Default.ParseArguments <CubicOptions, QuitOptions>(input).MapResult( (CubicOptions opts) => { try { var controlPoints = opts.Points.ToArray(); var cubicBezierCurve = CurveFactory.CreateCubicBezierCurve(controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3], opts.Intervals); cubicBezierCurve.Points.ToList().ForEach(p => { Console.WriteLine($"X = {p.X}, Y = {p.Y}"); }); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(0); }, (QuitOptions opts) => { run = !opts.Quit; return(0); }, errors => 1); } }