public PolyCurveTests(ITestOutputHelper testOutput) { _testOutput = testOutput; int degree = 3; List <Point3> pts = new List <Point3> { new Point3(0, 5, 5), new Point3(0, 0, 0), new Point3(5, 0, 0), new Point3(5, 0, 5), new Point3(5, 5, 5), new Point3(5, 5, 0) }; #region example // Initializes a polycurve from a curve a line and an arc. NurbsCurve curve = new NurbsCurve(pts, degree); Line line = new Line(new Point3(5, 5, 0), new Point3(5, 5, -2.5)); Arc arc = Arc.ByStartEndDirection(new Point3(5, 5, -2.5), new Point3(10, 5, -5), new Vector3(0, 0, -1)); List <NurbsBase> curves = new List <NurbsBase> { curve, line, arc }; _polycurve = new PolyCurve(curves); #endregion }
public void Initializes_An_Arc_By_Two_Points_And_A_Direction() { // Arrange Point3 pt1 = new Point3(5, 5, 5); Point3 pt2 = new Point3(10, 15, 10); Point3 dir = new Point3(3, 3, 0); // Act Arc arc = Arc.ByStartEndDirection(pt1, pt2, dir); // Assert arc.StartPoint.EpsilonEquals(pt1, 1e-6).Should().BeTrue(); arc.EndPoint.EpsilonEquals(pt2, 1e-6).Should().BeTrue(); arc.Radius.Should().BeApproximately(12.247449, GSharkMath.MaxTolerance); }
public void It_Returns_A_Arc_Based_On_A_Start_And_An_End_Point_And_A_Direction() { // Arrange Point3 startPt = new Point3(5, 5, 5); Point3 endPt = new Point3(10, 15, 10); Vector3 dir = new Vector3(3, 3, 0); double radiusExpected = 12.247449; double angleExpected = GSharkMath.ToRadians(60); Point3 centerExpected = new Point3(0, 10, 15); // Act Arc arc = Arc.ByStartEndDirection(startPt, endPt, dir); // Assert arc.Angle.Should().BeApproximately(angleExpected, 1e-6); arc.Radius.Should().BeApproximately(radiusExpected, 1e-6); arc.Plane.Origin.EpsilonEquals(centerExpected, 1e-6).Should().BeTrue(); }