public void TestSnapPointToPoint2() { XNAGame game = new XNAGame(); SnapPoint p1 = new SnapPoint(); p1.Position = new Vector3(0, 0, 0); var w2 = (float)(1 / Math.Sqrt(2)); p1.Normal = Vector3.Normalize(new Vector3(w2 * w2, w2, w2 * w2)); p1.Up = Vector3.Normalize(new Vector3(-w2 * w2, w2, -w2 * w2)); p1.ClockwiseWinding = true; SnapPoint p2 = new SnapPoint(); p2.Position = new Vector3(0, 0, 0); p2.Normal = Vector3.Normalize(new Vector3(1, 0, 0)); p2.Up = Vector3.Normalize(new Vector3(0, 1, 0)); p2.ClockwiseWinding = false; var snapper = new SnapperPointPoint(); List <Transformation> transformations = new List <Transformation>(); game.DrawEvent += delegate { transformations.Clear(); snapper.SnapAToB(p2, p1, Transformation.Identity, transformations); game.LineManager3D.DrawGroundShadows = true; game.LineManager3D.AddLine(p1.Position, p1.Position + 3f * p1.Normal, Color.Red); game.LineManager3D.AddLine(p1.Position, p1.Position + 3f * p1.Up, Color.Blue); game.LineManager3D.WorldMatrix = transformations[0].CreateMatrix(); game.LineManager3D.AddLine(p2.Position, p2.Position + 3f * p2.Normal + Vector3.One * 0.01f, Color.Yellow); game.LineManager3D.AddLine(p2.Position, p2.Position + 3f * p2.Up + Vector3.One * 0.01f, Color.Purple); }; game.Run(); }
public void TestSnapperPointPoint() { SnapPoint PointA = new SnapPoint(); SnapPoint PointB = new SnapPoint(); PointA.Position = new Vector3(1, 0, 2); PointA.Normal = Vector3.Normalize(new Vector3(1, 0, 1)); PointA.Up = Vector3.Normalize(new Vector3(0, 1, 0)); PointB.Position = new Vector3(2, 0, 3); PointB.Normal = Vector3.Normalize(new Vector3(3, 0, 4)); PointB.Up = Vector3.Normalize(new Vector3(0, 1, 0)); SnapperPointPoint pointSnapper = new SnapperPointPoint(); List <Transformation> transformations = new List <Transformation>(); pointSnapper.SnapAToB(PointA, PointB, Transformation.Identity, transformations); XNAGame game = new XNAGame(); Matrix transformation = transformations[0].CreateMatrix(); Vector3 APosTrans = PointA.Position; Vector3 ANormTrans = PointA.Normal; Vector3 AUpTrans = PointA.Up; game.DrawEvent += delegate { game.LineManager3D.AddLine(PointA.Position, PointA.Position + PointA.Normal, Color.Red); game.LineManager3D.AddLine(PointA.Position, PointA.Position + PointA.Up, Color.Yellow); game.LineManager3D.AddLine(PointB.Position, PointB.Position + PointB.Normal, Color.Red); game.LineManager3D.AddLine(PointB.Position, PointB.Position + PointB.Up, Color.Red); Vector3 offset = new Vector3(0.01f, 0.01f, 0.01f); game.LineManager3D.AddLine(Vector3.Transform(APosTrans, transformation) + offset, Vector3.Transform(APosTrans + ANormTrans, transformation) + offset, Color.Blue); game.LineManager3D.AddLine(Vector3.Transform(APosTrans, transformation) + offset, Vector3.Transform(APosTrans + AUpTrans, transformation) + offset, Color.Orange); }; game.Run(); }