public void ConstructFromThreePointsStraight() { Point2D a = new Point2D(0.0, 0.0); Point2D b = new Point2D(1.0, 0.0); Point2D c = new Point2D(2.0, 0.0); var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { a, b, c }); Assert.AreEqual(3, mesh.VertexCount); Assert.AreEqual(0, mesh.EdgeCount); var aFirst = mesh.Find(new AngularBisectorNetwork.BisectorVertex(a)); Assert.AreEqual(a, aFirst.Position); Assert.AreEqual(new Direction2D(0.0, -1.0), aFirst.Direction); var bFirst = mesh.Find(new AngularBisectorNetwork.BisectorVertex(b)); Assert.AreEqual(b, bFirst.Position); Assert.AreEqual(new Direction2D(0.0, -1.0), bFirst.Direction); var cFirst = mesh.Find(new AngularBisectorNetwork.BisectorVertex(c)); Assert.AreEqual(c, cFirst.Position); Assert.AreEqual(new Direction2D(0.0, -1.0), cFirst.Direction); }
public void ConstructFromThreePoints2() { Point2D a = new Point2D(200.0, 200.0); Point2D b = new Point2D(250.0, 160.0); Point2D c = new Point2D(300.0, 200.0); var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { a, b, c }); }
public void ConstructFromFourPoints5() { Point2D a = new Point2D(200.0, 100.0); Point2D b = new Point2D(100.0, 200.0); Point2D c = new Point2D(400.0, 200.0); Point2D d = new Point2D(300.0, 100.0); var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { a, b, c, d }); }
public void ConstructFromFourPoints3() { Point2D a = new Point2D(200.0, 200.0); Point2D b = new Point2D(348.0, 88.0); Point2D c = new Point2D(357.0, 277.0); Point2D d = new Point2D(477.0, 181.0); var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { a, b, c, d }); }
public void ConstructFromSevenPointsReflex3() { var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { new Point2D(100.0, 100.0), new Point2D(200.0, 200.0), new Point2D(200.0, 400.0), new Point2D(300.0, 500.0), new Point2D(400.0, 500.0), new Point2D(500.0, 300.0), new Point2D(550.0, 350.0) }); }
public void ConstructFromSevenPointsReflex2() { var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { new Point2D(200, 200), new Point2D(250, 160), new Point2D(300, 200), new Point2D(400, 200), new Point2D(300, 100), new Point2D(200, 100), new Point2D(100, 200), }); }
public void ConstructFromSevenPointsReflex1() { var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { new Point2D(2.0, 2.0), new Point2D(2.5, 1.6), new Point2D(3.0, 2.0), new Point2D(4.0, 2.0), new Point2D(3.0, 1.0), new Point2D(2.0, 1.0), new Point2D(1.0, 2.0), }); }
public void ConstructFromSevenPoints() { var mesh = AngularBisectorNetwork.CreateFromPolyline( new Point2D[] { new Point2D(362, 113), new Point2D(204, 158), new Point2D(235, 256), new Point2D(275, 353), new Point2D(412, 355), new Point2D(459, 181), new Point2D(418, 184) }); Assert.AreEqual(12, mesh.EdgeCount); }
public void ConstructFromSevenPointsReflex7() { var mesh = AngularBisectorNetwork.CreateFromPolyline( new Point2D[] { new Point2D(79, 444), new Point2D(188, 434), new Point2D(418, 465), new Point2D(681, 541), new Point2D(880, 276), new Point2D(443, 151), new Point2D(76, 174) }); Assert.AreEqual(12, mesh.EdgeCount); }
public void ConstructFromSevenPointsReflex6() { var mesh = AngularBisectorNetwork.CreateFromPolyline( new Point2D[] { new Point2D(160.0, 335.0), new Point2D(213.0, 333.0), new Point2D(385.0, 426.0), new Point2D(488.0, 77.0), new Point2D(273.0, 69.0), new Point2D(263.0, 212.0), new Point2D(100.0, 200.0) }); Assert.AreEqual(12, mesh.EdgeCount); }
public void ConstructFromSevenPointsReflex5() { var mesh = AngularBisectorNetwork.CreateFromPolyline( new Point2D[] { new Point2D(200.0, 200.0), new Point2D(250.0, 160.0), new Point2D(300.0, 200.0), new Point2D(400.0, 200.0), new Point2D(300.0, 100.0), new Point2D(200.0, 100.0), new Point2D(100.0, 200.0) }); Assert.AreEqual(12, mesh.EdgeCount); }
public void ConstructFromThreePoints() { Point2D a = new Point2D(0.0, 0.0); Point2D b = new Point2D(1.0, 0.0); Point2D c = new Point2D(2.0, -1.0); var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { a, b, c }); Assert.AreEqual(5, mesh.VertexCount); Assert.AreEqual(4, mesh.EdgeCount); var aNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(a)); Assert.AreEqual(a, aNode.Position); var bNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(b)); Assert.AreEqual(b, bNode.Position); var cNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(c)); Assert.AreEqual(c, cNode.Position); Assert.AreEqual(1, aNode.Degree); Assert.AreEqual(1, bNode.Degree); Assert.AreEqual(1, cNode.Degree); var aEnumerator = aNode.Edges.GetEnumerator(); aEnumerator.MoveNext(); EdgeBase apEdge = aEnumerator.Current; var bEnumerator = bNode.Edges.GetEnumerator(); bEnumerator.MoveNext(); EdgeBase bpEdge = bEnumerator.Current; Assert.AreSame(apEdge.Target, bpEdge.Target); var pNode = apEdge.Target as AngularBisectorNetwork.BisectorVertex; Assert.AreEqual(3, pNode.Degree); Assert.AreEqual(0.0, pNode.Position.X, epsilon); Assert.AreEqual(-Math.Sqrt(2.0) - 1.0, pNode.Position.Y, epsilon); var cEnumerator = cNode.Edges.GetEnumerator(); cEnumerator.MoveNext(); EdgeBase cqEdge = cEnumerator.Current; var qNode = cqEdge.Target as AngularBisectorNetwork.BisectorVertex; Assert.IsNotNull(qNode); Assert.AreEqual(2, qNode.Degree); EdgeBase pqEdge = mesh.Find(pNode, qNode); Assert.IsNotNull(pqEdge); Assert.IsNotNull(qNode.Direction); Assert.AreEqual(-1.9634954084936209, qNode.Direction.Value.Bearing, epsilon); }
public void ConstructFromFivePointsReflex() { Point2D a = new Point2D(0.0, 0.0); Point2D b = new Point2D(1.0, 0.0); Point2D c = new Point2D(2.0, -1.0); Point2D d = new Point2D(3.0, 0.0); Point2D e = new Point2D(4.0, 0.0); var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { a, b, c, d, e }); Assert.AreEqual(7, mesh.VertexCount); Assert.AreEqual(4, mesh.EdgeCount); var aNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(a)); Assert.AreEqual(a, aNode.Position); Assert.IsNull(aNode.Direction); var bNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(b)); Assert.AreEqual(b, bNode.Position); Assert.IsNull(bNode.Direction); var cNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(c)); Assert.AreEqual(c, cNode.Position); Assert.IsNotNull(cNode.Direction); Assert.AreEqual(new Direction2D(0.0, -1.0), cNode.Direction); var dNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(d)); Assert.AreEqual(d, dNode.Position); Assert.IsNull(dNode.Direction); var eNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(e)); Assert.AreEqual(e, eNode.Position); Assert.IsNull(eNode.Direction); Assert.AreEqual(1, aNode.Degree); Assert.AreEqual(1, bNode.Degree); Assert.AreEqual(0, cNode.Degree); Assert.AreEqual(1, dNode.Degree); Assert.AreEqual(1, eNode.Degree); var aEnumerator = aNode.Edges.GetEnumerator(); aEnumerator.MoveNext(); EdgeBase apEdge = aEnumerator.Current; var bEnumerator = bNode.Edges.GetEnumerator(); bEnumerator.MoveNext(); EdgeBase bpEdge = bEnumerator.Current; Assert.AreSame(apEdge.Target, bpEdge.Target); var pNode = apEdge.Target as AngularBisectorNetwork.BisectorVertex; Assert.AreEqual(0.0, pNode.Position.X); Assert.AreEqual(-1.0 - Math.Sqrt(2.0), pNode.Position.Y, epsilon); Assert.IsNotNull(pNode.Direction); Assert.AreEqual(2, pNode.Degree); Assert.AreEqual(-1.9634954084936209, pNode.Direction.Value.Bearing, epsilon); var dEnumerator = dNode.Edges.GetEnumerator(); dEnumerator.MoveNext(); EdgeBase dqEdge = dEnumerator.Current; var eEnumerator = eNode.Edges.GetEnumerator(); eEnumerator.MoveNext(); EdgeBase eqEdge = eEnumerator.Current; Assert.AreSame(dqEdge.Target, eqEdge.Target); var qNode = dqEdge.Target as AngularBisectorNetwork.BisectorVertex; Assert.AreEqual(4.0, qNode.Position.X); Assert.AreEqual(-1.0 - Math.Sqrt(2.0), qNode.Position.Y, epsilon); Assert.IsNotNull(qNode.Direction); Assert.AreEqual(2, qNode.Degree); Assert.AreEqual(-1.1780972450961724, qNode.Direction.Value.Bearing, epsilon); }
public void ConstructFromFourPoints1() { Point2D a = new Point2D(0.0, 0.0); Point2D b = new Point2D(1.0, 1.0); Point2D c = new Point2D(3.0, 1.0); Point2D d = new Point2D(4.0, 0.0); var mesh = AngularBisectorNetwork.CreateFromPolyline(new Point2D[] { a, b, c, d }); Assert.AreEqual(6, mesh.VertexCount); Assert.AreEqual(5, mesh.EdgeCount); var aNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(a)); Assert.AreEqual(a, aNode.Position); Assert.IsNull(aNode.Direction); var bNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(b)); Assert.AreEqual(b, bNode.Position); Assert.IsNull(bNode.Direction); var cNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(c)); Assert.AreEqual(c, cNode.Position); Assert.IsNull(cNode.Direction); var dNode = mesh.Find(new AngularBisectorNetwork.BisectorVertex(d)); Assert.AreEqual(d, dNode.Position); Assert.IsNull(dNode.Direction); Assert.AreEqual(1, aNode.Degree); Assert.AreEqual(1, bNode.Degree); Assert.AreEqual(1, cNode.Degree); Assert.AreEqual(1, dNode.Degree); var bEnumerator = bNode.Edges.GetEnumerator(); bEnumerator.MoveNext(); EdgeBase bpEdge = bEnumerator.Current; var cEnumerator = cNode.Edges.GetEnumerator(); cEnumerator.MoveNext(); EdgeBase cpEdge = cEnumerator.Current; Assert.AreSame(bpEdge.Target, cpEdge.Target); var pNode = bpEdge.Target as AngularBisectorNetwork.BisectorVertex; Assert.AreEqual(2.0, pNode.Position.X); Assert.AreEqual(-Math.Sqrt(2.0), pNode.Position.Y, epsilon); Assert.IsNull(pNode.Direction); var aEnumerator = aNode.Edges.GetEnumerator(); aEnumerator.MoveNext(); EdgeBase aqEdge = aEnumerator.Current; var dEnumerator = dNode.Edges.GetEnumerator(); dEnumerator.MoveNext(); EdgeBase dqEdge = dEnumerator.Current; Assert.AreSame(aqEdge.Target, dqEdge.Target); var qNode = aqEdge.Target as AngularBisectorNetwork.BisectorVertex; Assert.AreEqual(2.0, qNode.Position.X); Assert.AreEqual(-2.0, qNode.Position.Y, epsilon); EdgeBase pqEdge = mesh.Find(pNode, qNode); Assert.IsNotNull(pqEdge); Assert.IsNotNull(qNode.Direction); Assert.AreEqual(new Direction2D(0.0, -1.0), qNode.Direction); }