public void IsClosed() { var f0 = new HBFace(); var v0 = new HBVertex(); var v1 = new HBVertex(); var v2 = new HBVertex(); var e0 = new HBEdge(); var e1 = new HBEdge(); var e2 = new HBEdge(); Assert.AreEqual(0, f0.EdgeCount); f0.Edge = e0; v0.Edge = e0; v1.Edge = e1; v2.Edge = e2; e0.Set(v0, f0, null, null, null); Assert.IsFalse(e0.IsClosed); e0.Next = e1; e1.Set(v0, f0, e0, null, null); Assert.IsFalse(e0.IsClosed); e1.Next = e2; e2.Set(v0, f0, e1, e0, null); Assert.IsTrue(e0.IsClosed); }
public void EdgeCount() { var f0 = new HBFace(); var v0 = new HBVertex(); var v1 = new HBVertex(); var v2 = new HBVertex(); var e0 = new HBEdge(); var e1 = new HBEdge(); var e2 = new HBEdge(); Assert.AreEqual(0, f0.EdgeCount); f0.Edge = e0; v0.Edge = e0; v1.Edge = e1; v2.Edge = e2; e0.Set(v0, f0, null, null, null); Assert.AreEqual(1, e0.EdgeCount); e0.Next = e1; e1.Set(v0, f0, e0, null, null); Assert.AreEqual(2, e0.EdgeCount); e1.Next = e2; e2.Set(v0, f0, e1, e0, null); Assert.AreEqual(3, e0.EdgeCount); }
public void InsertEdge() { HBVertex v0 = new HBVertex(); HBEdge e0 = new HBEdge(); HBEdge e1 = new HBEdge(); HBEdge e2 = new HBEdge(); HBEdge e3 = new HBEdge(); HBEdge e4 = new HBEdge(); HBEdge e5 = new HBEdge(); e0.Opposite = e1; e1.Opposite = e0; e2.Opposite = e3; e3.Opposite = e2; e4.Opposite = e5; e5.Opposite = e4; v0.InsertEdge(e0); v0.InsertEdge(e2); v0.InsertEdge(e4); List <HBEdge> edges = new List <HBEdge>(); foreach (var e in v0.EnumerateEdges(true)) { edges.Add(e); } Assert.AreEqual(edges[0], e0); Assert.AreEqual(edges[1], e2); Assert.AreEqual(edges[2], e4); edges.Clear(); foreach (var e in v0.EnumerateEdges(false)) { edges.Add(e); } Assert.AreEqual(edges[0], e0); Assert.AreEqual(edges[1], e4); Assert.AreEqual(edges[2], e2); }
public void EmptyEnumerateEdges() { var edge = new HBEdge(); var edges = new List <HBEdge>(); foreach (var e in edge.EnumerateEdges(true)) { edges.Add(e); } Assert.AreEqual(1, edges.Count); edge = new HBEdge(); edges = new List <HBEdge>(); foreach (var e in edge.EnumerateEdges(false)) { edges.Add(e); } Assert.AreEqual(1, edges.Count); }
public void InsertEdgeByAngle() { Vector2f offset = new Vector2f(-4, 6); HBVertex2f v0 = new HBVertex2f(offset + new Vector2f(0, 0)); HBVertex2f v1 = new HBVertex2f(offset + new Vector2f(0, -1)); HBVertex2f v2 = new HBVertex2f(offset + new Vector2f(0, 1)); HBVertex2f v3 = new HBVertex2f(offset + new Vector2f(1, 0)); HBVertex2f v4 = new HBVertex2f(offset + new Vector2f(-1, 0)); HBEdge e0 = new HBEdge(); HBEdge e1 = new HBEdge(); HBEdge e2 = new HBEdge(); HBEdge e3 = new HBEdge(); HBEdge e4 = new HBEdge(); HBEdge e5 = new HBEdge(); HBEdge e6 = new HBEdge(); HBEdge e7 = new HBEdge(); e0.Opposite = e1; e1.Opposite = e0; e2.Opposite = e3; e3.Opposite = e2; e4.Opposite = e5; e5.Opposite = e4; e6.Opposite = e7; e7.Opposite = e6; v0.InsertEdgeByAngle(e0); v1.InsertEdgeByAngle(e1); v2.InsertEdgeByAngle(e3); v3.InsertEdgeByAngle(e5); v4.InsertEdgeByAngle(e7); Assert.AreEqual(v0.Edge, e0); Assert.AreEqual(e0.Vertex, v0); Assert.AreEqual(e0.Opposite, e1); Assert.AreEqual(e0.Next, null); Assert.AreEqual(e0.Previous, null); v0.InsertEdgeByAngle(e2); Assert.AreEqual(e0.Next, e3); Assert.AreEqual(e1.Previous, e2); Assert.AreEqual(e2.Next, e1); Assert.AreEqual(e3.Previous, e0); v0.InsertEdgeByAngle(e4); Assert.AreEqual(e0.Next, e5); Assert.AreEqual(e1.Previous, e2); Assert.AreEqual(e4.Next, e3); Assert.AreEqual(e5.Previous, e0); Assert.AreEqual(e2.Next, e1); Assert.AreEqual(e3.Previous, e4); v0.InsertEdgeByAngle(e6); Assert.AreEqual(e0.Next, e5); Assert.AreEqual(e1.Previous, e6); Assert.AreEqual(e2.Next, e7); Assert.AreEqual(e3.Previous, e4); Assert.AreEqual(e6.Next, e1); Assert.AreEqual(e7.Previous, e2); }