public void IsCoplanar() { var p1 = new Ax3(new Pnt(1, 2, 3), new Dir(1, 0, 0)); var p2 = new Ax3(new Pnt(2, 3, 4), new Dir(0, 1, 0)); Assert.IsFalse(p1.IsCoplanar(p2, 0.1, 0.1)); Assert.IsFalse(p1.IsCoplanar(p2, 0.1, 2.0)); Assert.IsFalse(p1.IsCoplanar(p2, 0.1, Math.PI / 2)); Assert.IsTrue(p1.IsCoplanar(p2, 1.0, Math.PI / 2)); }
public void Rotate() { var res = new Ax3(new Pnt(1, 1, 2), new Dir(1, 0, 0), new Dir(0, -1, 0)); var a1 = new Ax1(new Pnt(2, 2, 2), new Dir(1, 0, 0)); var p2 = new Ax3(new Pnt(1, 2, 3), new Dir(1, 0, 0)); Assert.IsTrue(res.IsCoplanar(p2.Rotated(a1, Math.PI / 2), 0, 0)); p2.Rotate(a1, Math.PI / 2); Assert.IsTrue(res.IsCoplanar(p2, 0, 0)); }
public void ValueType_Ax3() { var s1 = new Ax3(new Pnt(1, 2, 3), new Dir(1, 0, 0)); var s2 = new Ax3(new Pnt(2, 3, 4), new Dir(0, 1, 0)); Assert.AreEqual(new Pnt(1, 2, 3), s1.Location); Assert.AreEqual(new Dir(1, 0, 0), s1.Direction); Assert.AreEqual(new Dir(0, 0, 1), s1.XDirection); Assert.AreEqual(new Dir(0, -1, 0), s1.YDirection); var p2 = s2; Assert.IsFalse(s1.IsCoplanar(p2, 0.1, 0.1)); Assert.IsFalse(s1.IsCoplanar(p2, 0.1, 2.0)); Assert.IsFalse(s1.IsCoplanar(p2, 0.1, Math.PI / 2)); Assert.IsTrue(s1.IsCoplanar(p2, 1.0, Math.PI / 2)); Assert.AreEqual(Math.PI / 2, s1.Angle(p2)); p2.Location = new Pnt(3, 2, 1); Assert.AreEqual(new Pnt(3, 2, 1), p2.Location); p2.Direction = new Dir(0, 1, 0); Assert.AreEqual(new Dir(0, 1, 0), p2.Direction); p2.XDirection = new Dir(0, 0, -1); Assert.AreEqual(new Dir(0, 0, -1), p2.XDirection); p2.YDirection = new Dir(1, 0, 0); Assert.AreEqual(new Dir(1, 0, 0), p2.YDirection); p2.XReverse(); Assert.AreEqual(new Dir(0, 0, -1), p2.XDirection); p2.YReverse(); Assert.AreEqual(new Dir(-1, 0, 0), p2.YDirection); p2.ZReverse(); Assert.AreEqual(new Dir(0, -1, 0), p2.Direction); Assert.IsFalse(p2.Direct()); var res = new Ax3(new Pnt(1, -2, -3), new Dir(-1, 0, 0), new Dir(0, 0, -1)); res.YReverse(); p2 = s1; Assert.AreEqual(res, p2.Mirrored(new Pnt(1, 0, 0))); p2.Mirror(new Pnt(1, 0, 0)); Assert.AreEqual(res, p2); res = new Ax3(new Pnt(1, -2, 3), new Dir(1, 0, 0), new Dir(0, 0, 1)); res.YReverse(); var a2 = new Ax2(new Pnt(1, 0, 0), new Dir(0, 1, 0)); p2 = s1; Assert.AreEqual(res, p2.Mirrored(a2)); p2.Mirror(a2); Assert.AreEqual(res, p2); res = new Ax3(new Pnt(1, -2, -3), new Dir(1, 0, 0), new Dir(0, 0, -10)); var a1 = new Ax1(new Pnt(1, 0, 0), new Dir(1, 0, 0)); p2 = s1; Assert.AreEqual(res, p2.Mirrored(a1)); p2.Mirror(a1); Assert.AreEqual(res, p2); res = new Ax3(new Pnt(1, 1, 2), new Dir(1, 0, 0), new Dir(0, -1, 0)); a1 = new Ax1(new Pnt(2, 2, 2), new Dir(1, 0, 0)); Assert.IsTrue(res.IsCoplanar(s1.Rotated(a1, Math.PI / 2), 0, 0)); p2 = s1; p2.Rotate(a1, Math.PI / 2); Assert.IsTrue(res.IsCoplanar(p2, 0, 0)); res = new Ax3(new Pnt(-1, 0, 5), new Dir(1, 0, 0)); p2 = s1; Assert.AreEqual(res, p2.Scaled(new Pnt(2, 3, 2), 3)); p2.Scale(new Pnt(2, 3, 2), 3); Assert.AreEqual(res, p2); res = new Ax3(new Pnt(-1, -1, 2), new Dir(1, 0, 0)); p2 = s1; Assert.AreEqual(res, p2.Translated(new Pnt(3, 5, 4), new Pnt(1, 2, 3))); p2.Translate(new Pnt(3, 5, 4), new Pnt(1, 2, 3)); Assert.AreEqual(res, p2); res = new Ax3(new Pnt(3, 5, 4), new Dir(1, 0, 0)); p2 = s1; Assert.AreEqual(res, p2.Translated(new Vec(2, 3, 1))); p2.Translate(new Vec(2, 3, 1)); Assert.AreEqual(res, p2); //gp_Trsf gt1 = new gp_Trsf(); //gt1.SetRotation(gp.OZ(), Math.PI / 2); //gp2.Transform(gt1); //TestContext.WriteLine(string.Format(CultureInfo.InvariantCulture, $"({gp2.Location().x},{gp2.Location().y},{gp2.Location().z}),({gp2.XDirection().x},{gp2.XDirection().y},{gp2.XDirection().z}),({gp2.YDirection().x},{gp2.YDirection().y},{gp2.YDirection().z}),({gp2.Direction().x},{gp2.Direction().y},{gp2.Direction().z})")); Trsf t1 = new Trsf(); t1.SetRotation(Ax1.OZ, Math.PI / 2); p2 = s1; Assert.AreEqual("(-2,1,3),(0,0,1),(1,-1.11022302462516E-16,0),(1.11022302462516E-16,1,0)", p2.Transformed(t1).ToString()); p2.Transform(t1); Assert.AreEqual("(-2,1,3),(0,0,1),(1,-1.11022302462516E-16,0),(1.11022302462516E-16,1,0)", p2.ToString()); }