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"); }
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"); }
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); }