public void InternalAngleConstraintShouldWork() { for (int i = 1; i < 10; i++) { var line1 = new Line( new Point(0, 0, false), new Point(10, 0, false, true) ); var line2 = new Line( new Point(0, 0, false), new Point(10, -1, false) ); Console.WriteLine(i); var a = Math.PI / 2 / 3; SketchSolve.Solver.solve (true , line1.HasInternalAngle(line2, new Parameter(a, false))); line1 .Vector .Cosine(line2.Vector) .Should() .BeApproximately(Math.Cos(a), 0.001); } }
public void SquareAroundCircle() { var circle = new Circle() { center = new Point(0, 0, false), rad = new Parameter(10, false) }; // We want a box around the circle where all lines touch the // circle and line0 is vertical. We arrange the lines roughly // in the correct placement to get the search off to a good // start var line0 = new Line(new Point(-21,0), new Point(0, 23)); var line1 = new Line(new Point(0,22), new Point(22, 0)); var line2 = new Line(new Point(21,0), new Point(0, -29)); var line3 = new Line(new Point(0,-27), new Point(-25, 0)); var angle = new Parameter (Math.PI/2, false); var r = SketchSolve.Solver.solve ( true , line0.IsTangentTo(circle) , line1.IsTangentTo(circle) , line2.IsTangentTo(circle) , line3.IsTangentTo(circle) , line0.HasInternalAngle (line1, angle) , line1.HasInternalAngle(line2, angle) , line2.HasInternalAngle(line3, angle) , line3.HasInternalAngle(line0, angle) , line0.p2.IsColocated(line1.p1) , line1.p2.IsColocated(line2.p1) , line2.p2.IsColocated(line3.p1) , line3.p2.IsColocated(line0.p1) , line0.IsVertical() //, line1.IsHorizontal() //, line2.IsVertical() //, line3.IsHorizontal() ); Console.WriteLine (line0); Console.WriteLine (line1); Console.WriteLine (line2); Console.WriteLine (line3); Console.WriteLine (circle.CenterTo(line0)); r.Should ().BeApproximately (0, 0.0001); }