Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }