Пример #1
0
        public void World1_MarkerTransform_ForPoint()
        {
            var world1t = MatrixSupport.Translate(World1, TestPoint.X, TestPoint.Y);

            TestContext.WriteLine($"world1t {world1t} testpoint ${TestPoint}");
            var marker    = MatrixSupport.LocalFor(world1t, MK_WIDTH, Bounds, -.5, -.5);
            var model2    = MatrixSupport.Multiply(marker, world1t);
            var mkproj    = MatrixSupport.Multiply(model2, Projection);
            var modelproj = MatrixSupport.Multiply(World1, Projection);
            var reference = modelproj.Transform(TestPoint);
            var target    = mkproj.Transform(TestPointMarkerCenter);

            TestContext.WriteLine($"marker {marker}  model2 {model2}  Mk.M.P {mkproj}");
            TestContext.WriteLine($"M.P {modelproj}  pt {TestPointMarkerCenter}  ref {reference}  target {target}");
            Assert.AreEqual(reference.X, target.X, "target.X failed");
            Assert.AreEqual(reference.Y, target.Y, "target.Y failed");
        }
Пример #2
0
        public void Matrix_Translate_Transform()
        {
            var wtrans = MatrixSupport.Translate(World1, TestPoint.X, TestPoint.Y);

            TestContext.WriteLine($"modeltrans {wtrans}");
            // with the translation, (0,0) is our test point (WC->NDC)
            var point = wtrans.Transform(Origin);

            AssertDouble(TestPoint_ndc.X, point.X, "X failed");
            AssertDouble(TestPoint_ndc.Y, point.Y, "Y failed");
            // cross-check through W1 inverse
            var winv = MatrixSupport.Invert(World1);
            // this goes back to world coordinates (NDC->WC)
            var point2 = winv.Transform(point);

            Assert.AreEqual(TestPoint.X, point2.X, "X failed.2");
            Assert.AreEqual(TestPoint.Y, point2.Y, "Y failed.2");
        }
Пример #3
0
        public void Matrix_Translate_MatchesTransformGroup()
        {
            var gt = new TransformGroup();

            gt.Children.Add(new TranslateTransform()
            {
                X = TestPoint.X, Y = TestPoint.Y
            });
            gt.Children.Add(new MatrixTransform()
            {
                Matrix = World1
            });
            TestContext.WriteLine($"final matrix {gt.Value}");
            var modeltrans = MatrixSupport.Translate(World1, TestPoint.X, TestPoint.Y);

            TestContext.WriteLine($"modeltrans {modeltrans}");
            MatrixEqual(gt.Value, modeltrans);
        }