public void IsParallel() { var p1 = new Vec2d(1, 0); var p2 = new Vec2d(0, 1); Assert.IsFalse(p1.IsParallel(p2, 0.1)); Assert.IsTrue(p1.IsParallel(p2, Math.PI / 2)); }
public void SmoothCorner_BezierArc() { var sketch = Sketch.Create(); var p1 = sketch.AddPoint(new Pnt2d(0, 0)); var p2 = sketch.AddPoint(new Pnt2d(2, 9)); var p3 = sketch.AddPoint(new Pnt2d(10, 10)); var p4 = sketch.AddPoint(new Pnt2d(20, 0)); var p5 = sketch.AddPoint(new Pnt2d(18, 7)); var bezier1 = new SketchSegmentBezier(p1, p2, p3); var s1 = sketch.AddSegment(bezier1); var arc = new SketchSegmentArc(p3, p4, p5); var s2 = sketch.AddSegment(arc); var constraint1 = new SketchConstraintSmoothCorner(p3, true); var c1 = sketch.AddConstraint(constraint1); Assert.IsTrue(sketch.SolveConstraints(true)); var tan1 = new Vec2d(sketch.Points[p2], sketch.Points[p3]); var parameter = new double[2]; var circle = arc.GetCircle(sketch.Points, parameter); var pnt = new Pnt2d(); var tan2 = new Vec2d(); ElCLib.D1(parameter[0], circle, ref pnt, ref tan2); Assert.IsTrue(tan1.IsParallel(tan2, 0.01)); }
public void SmoothCorner_BezierLine() { var sketch = Sketch.Create(); var p1 = sketch.AddPoint(new Pnt2d(0, 0)); var p2 = sketch.AddPoint(new Pnt2d(2, 9)); var p3 = sketch.AddPoint(new Pnt2d(10, 10)); var p4 = sketch.AddPoint(new Pnt2d(15, 0)); var bezier1 = new SketchSegmentBezier(p1, p2, p3); var s1 = sketch.AddSegment(bezier1); var line = new SketchSegmentLine(p3, p4); var s2 = sketch.AddSegment(line); var constraint1 = new SketchConstraintSmoothCorner(p3, true); var c1 = sketch.AddConstraint(constraint1); Assert.IsTrue(sketch.SolveConstraints(true)); var tan1 = new Vec2d(sketch.Points[p2], sketch.Points[p3]); var tan2 = new Vec2d(sketch.Points[p3], sketch.Points[p4]); Assert.IsTrue(tan1.IsParallel(tan2, 0.01)); }
public void SmoothCorner_BezierBezier_Symmetric() { var sketch = Sketch.Create(); var p1 = sketch.AddPoint(new Pnt2d(0, 0)); var p2 = sketch.AddPoint(new Pnt2d(2, 9)); var p3 = sketch.AddPoint(new Pnt2d(10, 10)); var p4 = sketch.AddPoint(new Pnt2d(15, 9)); var p5 = sketch.AddPoint(new Pnt2d(20, 7)); var p6 = sketch.AddPoint(new Pnt2d(20, 0)); var bezier1 = new SketchSegmentBezier(p1, p2, p3); var s1 = sketch.AddSegment(bezier1); var bezier2 = new SketchSegmentBezier(p3, p4, p5, p6); var s2 = sketch.AddSegment(bezier2); var constraint1 = new SketchConstraintSmoothCorner(p3, true); var c1 = sketch.AddConstraint(constraint1); Assert.IsTrue(sketch.SolveConstraints(true)); var tan1 = new Vec2d(sketch.Points[p2], sketch.Points[p3]); var tan2 = new Vec2d(sketch.Points[p3], sketch.Points[p4]); Assert.IsTrue(tan1.IsParallel(tan2, 0.1)); Assert.AreEqual(tan1.Magnitude(), tan2.Magnitude(), 0.0001); }
public void ValueType_Vec2d() { var p1 = new Vec2d(1, 0); var p2 = new Vec2d(0, 1); Assert.IsFalse(p1.IsEqual(p2, 0.99, 0.1)); Assert.IsTrue(p1.IsEqual(p2, 1.01, 0.1)); Assert.IsTrue(p1.IsEqual(p2, 0.99, Math.PI / 2)); Assert.IsTrue(p1.IsNormal(p2, 0.1)); Assert.IsFalse(p1.IsOpposite(p2, 0.1)); Assert.IsTrue(p1.IsOpposite(p2, Math.PI / 2)); Assert.IsFalse(p1.IsParallel(p2, 0.1)); Assert.IsTrue(p1.IsParallel(p2, Math.PI / 2)); p1 = new Vec2d(1, 2); p2 = new Vec2d(4, 5); Assert.AreEqual(5, p1.SquareMagnitude()); Assert.AreEqual(Math.Sqrt(5), p1.Magnitude()); p2 = p1; p2.Add(new Vec2d(1, 2)); Assert.AreEqual(new Vec2d(2, 4), p2); Assert.AreEqual(new Vec2d(2, 4), p1.Added(new Vec2d(1, 2))); p2 = new Vec2d(1, 2); p2.Subtract(new Vec2d(3, 2)); Assert.AreEqual(new Vec2d(-2, 0), p2); Assert.AreEqual(new Vec2d(-2, 0), p1.Subtracted(new Vec2d(3, 2))); p2 = new Vec2d(1, 2); Assert.AreEqual(-4, p1.Crossed(new Vec2d(3, 2))); Assert.AreEqual(Math.Sqrt(16), p1.CrossMagnitude(new Vec2d(3, 2))); Assert.AreEqual(16, p1.CrossSquareMagnitude(new Vec2d(3, 2))); p2 = new Vec2d(1, 2); p2.Divide(2); Assert.AreEqual(new Vec2d(0.5, 1), p2); Assert.AreEqual(new Vec2d(0.5, 1), p1.Divided(2)); Assert.AreEqual(5, p1.Dot(new Vec2d(1, 2))); p2 = new Vec2d(1, 2); p2.Multiply(2); Assert.AreEqual(new Vec2d(2, 4), p2); Assert.AreEqual(new Vec2d(2, 4), p1.Multiplied(2)); p2 = new Vec2d(1, 2); p2.Scale(2); Assert.AreEqual(new Vec2d(2, 4), p2); Assert.AreEqual(new Vec2d(2, 4), p1.Scaled(2)); p2 = new Vec2d(1, 23); Assert.AreEqual("0.0434372242763069,0.99905615835506", p2.Normalized().ToString()); p2.Normalize(); Assert.AreEqual("0.0434372242763069,0.99905615835506", p2.ToString()); p2 = new Vec2d(1, 2); p2.Reverse(); Assert.AreEqual(new Vec2d(-1, -2), p2); Assert.AreEqual(new Vec2d(-1, -2), p1.Reversed()); p2.SetLinearForm(new Vec2d(1, 2), new Vec2d(4, 5)); Assert.AreEqual(new Vec2d(5, 7), p2); p2.SetLinearForm(2, new Vec2d(1, 2), new Vec2d(4, 5)); Assert.AreEqual(new Vec2d(6, 9), p2); p2.SetLinearForm(2, new Vec2d(1, 2), 3, new Vec2d(4, 5)); Assert.AreEqual(new Vec2d(14, 19), p2); p2.SetLinearForm(2, new Vec2d(1, 2), 3, new Vec2d(4, 5), new Vec2d(7, 8)); Assert.AreEqual(new Vec2d(21, 27), p2); p2 = new Vec2d(2, 1); Assert.AreEqual(new Vec2d(1, 0), p2.Mirrored(new Vec2d(1, 0))); p2.Mirror(new Vec2d(1, 0)); Assert.AreEqual(new Vec2d(1, 0), p2); var m2 = new Ax2d(new Pnt2d(-1, 2), new Dir2d(-1, 0)); p2 = new Vec2d(2, 1); Assert.AreEqual(new Vec2d(2, -1), p2.Mirrored(m2)); p2.Mirror(m2); Assert.AreEqual(new Vec2d(2, -1), p2); p2 = new Vec2d(2, 1); Assert.AreEqual("-1,2", p2.Rotated(Math.PI / 2).ToString()); p2.Rotate(Math.PI / 2); Assert.AreEqual("-1,2", p2.ToString()); //TestContext.WriteLine(string.Format(CultureInfo.InvariantCulture, "{0},{1},{2}", gp2.x, gp2.y, gp2.z)); Trsf2d t1 = new Trsf2d(); t1.SetRotation(new Pnt2d(1, 2), Math.PI / 2); p2 = new Vec2d(2, 1); Assert.AreEqual("-1,2", p2.Transformed(t1).ToString()); p2.Transform(t1); Assert.AreEqual("-1,2", p2.ToString()); }