Example #1
0
        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));
        }
Example #2
0
        //--------------------------------------------------------------------------------------------------

        void _UpdateGizmo()
        {
            if (_Gizmo == null)
            {
                _Gizmo = new AIS_RotationGizmo(_CoordinateSystem);
                _Gizmo.SetLength(100);
                WorkspaceController.Workspace.AisContext.Display(_Gizmo, false);
            }
            else
            {
                _Gizmo.SetComponent(_CoordinateSystem.Rotated(RotationAxis, Delta));
            }
        }
        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());
        }