Ejemplo n.º 1
0
        public void TestCompareTo_ObjEqualInEverything()
        {
            Vertex vertex = Auxilaries.RandomVertex();

            HalfEdge thisEdge  = new HalfEdge(vertex);
            HalfEdge otherEdge = new HalfEdge(vertex);

            HalfEdge twin = Auxilaries.RandomHalfEdge();

            thisEdge.Twin  = twin;
            otherEdge.Twin = twin;

            HalfEdge next = Auxilaries.RandomHalfEdge();

            thisEdge.Next  = next;
            otherEdge.Next = next;

            HalfEdge previous = Auxilaries.RandomHalfEdge();

            thisEdge.Previous  = previous;
            otherEdge.Previous = previous;

            int expected = 0;
            int actual   = thisEdge.CompareTo(otherEdge);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 2
0
        void TestCompareTo_ObjNotFace_Helper()
        {
            Face     face = Auxilaries.RandomFace();
            HalfEdge edge = Auxilaries.RandomHalfEdge();

            face.CompareTo(edge);
        }
Ejemplo n.º 3
0
        void TestCompareTo_ObjNotHalfedge_Helper()
        {
            HalfEdge edge   = Auxilaries.RandomHalfEdge();
            Vertex   vertex = Auxilaries.RandomVertex();

            edge.CompareTo(vertex);
        }
Ejemplo n.º 4
0
        public void Test_Centroid_TriangleFace()
        {
            Vertex a = new Vertex(new Vector3(1, 2, 3));
            Vertex b = new Vertex(new Vector3(3, 9, -1));
            Vertex c = new Vertex(new Vector3(4, 4, -7));

            HalfEdge ab = new HalfEdge(a);
            HalfEdge ac = new HalfEdge(a);

            HalfEdge ba = new HalfEdge(b);
            HalfEdge bc = new HalfEdge(b);

            HalfEdge ca = new HalfEdge(c);
            HalfEdge cb = new HalfEdge(c);

            ab.Twin = ba;
            ac.Twin = ca;

            ba.Twin = ab;
            bc.Twin = cb;

            ca.Twin = ac;
            cb.Twin = bc;

            Face face = new Face(0, Auxilaries.RandomNormal());

            face.AddOuterComponent(ac);
            face.AddOuterComponent(cb);
            face.AddOuterComponent(ba);

            Vector3 actual   = face.Centroid;
            Vector3 expected = new Vector3(8, 15, -5) * (1.0f / 3.0f);

            Assert.IsTrue(expected == actual);
        }
Ejemplo n.º 5
0
        public void TestAddIncidentEdges_TwinsAndNextAndPreviousSet()
        {
            Vertex v1 = Auxilaries.RandomVertex();
            Vertex v2 = Auxilaries.RandomVertex();
            Vertex v3 = Auxilaries.RandomVertex();

            HalfEdge e11 = new HalfEdge(v1);
            HalfEdge e12 = new HalfEdge(v2);
            HalfEdge e31 = new HalfEdge(v3);
            HalfEdge e32 = new HalfEdge(v1);
            HalfEdge e41 = new HalfEdge(v3);
            HalfEdge e42 = new HalfEdge(v2);

            e11.Twin = e12;
            e12.Twin = e11;
            e31.Twin = e32;
            e32.Twin = e31;
            e41.Twin = e42;
            e42.Twin = e41;


            e12.Next = e32;
            e32.Next = e41;
            e41.Next = e12;

            e12.Previous = e41;
            e32.Previous = e12;
            e41.Previous = e32;

            v1.AddIncidentEdge(e32);

            Assert.Contains(e32, v1.IncidentEdges);
        }
Ejemplo n.º 6
0
        public void TestEquals_EqualsDifferentOrder()
        {
            HalfEdge a = Auxilaries.RandomHalfEdge();
            HalfEdge b = Auxilaries.RandomHalfEdge();
            HalfEdge c = Auxilaries.RandomHalfEdge();
            HalfEdge d = Auxilaries.RandomHalfEdge();

            Vector3 normal = Auxilaries.RandomNormal();

            Face thisFace = new Face(0, normal);

            thisFace.AddOuterComponent(a);
            thisFace.AddOuterComponent(b);
            thisFace.AddOuterComponent(c);
            thisFace.AddOuterComponent(d);

            Face otherFace = new Face(0, normal);

            otherFace.AddOuterComponent(b);
            otherFace.AddOuterComponent(a);
            otherFace.AddOuterComponent(d);
            otherFace.AddOuterComponent(c);

            Assert.IsTrue(thisFace.Equals(otherFace));
            Assert.IsTrue(otherFace.Equals(thisFace));
            Assert.AreEqual(thisFace.GetHashCode(), otherFace.GetHashCode());
        }
Ejemplo n.º 7
0
        public void TestEquals_EqualBothIncidentFacesSet()
        {
            Vertex a = Auxilaries.RandomVertex();
            Vertex b = Auxilaries.RandomVertex();
            Vertex c = Auxilaries.RandomVertex();

            HalfEdge abOther = new HalfEdge(a);
            HalfEdge abThis  = new HalfEdge(a);
            HalfEdge ac      = new HalfEdge(a);

            HalfEdge ba = new HalfEdge(b);
            HalfEdge bc = new HalfEdge(b);

            HalfEdge ca = new HalfEdge(c);
            HalfEdge cb = new HalfEdge(c);

            Face face = new Face(2, Auxilaries.RandomNormal());

            face.AddOuterComponent(abThis);
            face.AddOuterComponent(bc);
            face.AddOuterComponent(ca);

            abThis.IncidentFace  = face;
            abOther.IncidentFace = face;

            abThis.Twin  = ba;
            abOther.Twin = ba;
            ac.Twin      = ca;

            ba.Twin = abThis;
            bc.Twin = bc;

            ca.Twin = ac;
            cb.Twin = bc;

            abThis.Next  = bc;
            abOther.Next = bc;
            ac.Next      = cb;

            ba.Next = ac;
            bc.Next = ca;

            ca.Next = abThis;
            cb.Next = ba;

            abThis.Previous  = ca;
            abOther.Previous = ca;
            ac.Previous      = ba;

            ba.Previous = cb;
            bc.Previous = abThis;

            ca.Previous = bc;
            cb.Previous = ac;

            Assert.AreEqual(abThis.GetHashCode(), abOther.GetHashCode());

            Assert.IsTrue(abThis.Equals(abOther));
            Assert.IsTrue(abOther.Equals(abThis));
        }
Ejemplo n.º 8
0
        void TestCompareTo_ObjNotVertex_Helper()
        {
            Vertex   vertex = Auxilaries.RandomVertex();
            HalfEdge edge   = Auxilaries.RandomHalfEdge();

            vertex.CompareTo(edge);
        }
Ejemplo n.º 9
0
        public void TestEquals_IdxEqualNotEqualSameSizeDifferentEdges()
        {
            HalfEdge a = Auxilaries.RandomHalfEdge();
            HalfEdge b = Auxilaries.RandomHalfEdge();
            HalfEdge c = Auxilaries.RandomHalfEdge();
            HalfEdge d = Auxilaries.RandomHalfEdge();
            HalfEdge e = Auxilaries.RandomHalfEdge();

            Vector3 normal = Auxilaries.RandomNormal();

            Face thisFace = new Face(0, normal);

            thisFace.AddOuterComponent(a);
            thisFace.AddOuterComponent(b);
            thisFace.AddOuterComponent(c);
            thisFace.AddOuterComponent(d);

            Face otherFace = new Face(0, normal);

            otherFace.AddOuterComponent(a);
            otherFace.AddOuterComponent(b);
            otherFace.AddOuterComponent(e);
            otherFace.AddOuterComponent(d);

            Assert.IsFalse(thisFace.Equals(otherFace));
            Assert.IsFalse(otherFace.Equals(thisFace));
            Assert.AreNotEqual(thisFace.GetHashCode(), otherFace.GetHashCode());
        }
Ejemplo n.º 10
0
        public void TestIsTriangular_Triangle()
        {
            Vertex a = new Vertex(new Vector3(1, 2, 3));
            Vertex b = new Vertex(new Vector3(3, 9, -1));
            Vertex c = new Vertex(new Vector3(4, 4, -7));

            HalfEdge ab = new HalfEdge(a);
            HalfEdge ac = new HalfEdge(a);

            HalfEdge ba = new HalfEdge(b);
            HalfEdge bc = new HalfEdge(b);

            HalfEdge ca = new HalfEdge(c);
            HalfEdge cb = new HalfEdge(c);

            ab.Twin = ba;
            ac.Twin = ca;

            ba.Twin = ab;
            bc.Twin = cb;

            ca.Twin = ac;
            cb.Twin = bc;

            Face triangle = new Face(0, Auxilaries.RandomNormal());

            triangle.AddOuterComponent(ac);
            triangle.AddOuterComponent(cb);
            triangle.AddOuterComponent(ba);

            Assert.IsTrue(triangle.IsTriangular());
        }
Ejemplo n.º 11
0
        public void TestHasIncidentFace_HasIncidentFace()
        {
            HalfEdge edge = Auxilaries.RandomHalfEdge();

            edge.IncidentFace = new Face(0, Auxilaries.RandomNormal());

            Assert.IsTrue(edge.HasIncidentFace);
        }
Ejemplo n.º 12
0
        public void XAndyAreNotEqual_OriginDifferent()
        {
            HalfEdge x = Auxilaries.RandomHalfEdge();
            HalfEdge y = Auxilaries.RandomHalfEdge();

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.AreNotEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
Ejemplo n.º 13
0
        public void XAndyAreNotEqual_PositionDifferent()
        {
            Vertex x = Auxilaries.RandomVertex();
            Vertex y = Auxilaries.RandomVertex();

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.AreNotEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
Ejemplo n.º 14
0
        public void YIsNull()
        {
            Face x = Auxilaries.RandomFace();
            Face y = null;

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.AreNotEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
Ejemplo n.º 15
0
        public void YIsNull()
        {
            Vertex x = Auxilaries.RandomVertex();
            Vertex y = null;

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.AreNotEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
Ejemplo n.º 16
0
        public void XIsNull()
        {
            HalfEdge x = null;
            HalfEdge y = Auxilaries.RandomHalfEdge();

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.AreNotEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
Ejemplo n.º 17
0
        public void TestHasPrevious_HasPrevious()
        {
            HalfEdge edge     = Auxilaries.RandomHalfEdge();
            HalfEdge previous = Auxilaries.RandomHalfEdge();

            edge.Previous = previous;

            Assert.IsTrue(edge.HasPrevious);
        }
Ejemplo n.º 18
0
        public void TestAddIncidentEdges_NoOtherPropertiesSet()
        {
            Vertex   v1  = Auxilaries.RandomVertex();
            HalfEdge e11 = new HalfEdge(v1);

            v1.AddIncidentEdge(e11);

            Assert.Contains(e11, v1.IncidentEdges);
        }
Ejemplo n.º 19
0
        public void TestCompareTo_ObjNull()
        {
            HalfEdge edge = Auxilaries.RandomHalfEdge();

            int expected = 1;
            int actual   = edge.CompareTo(null);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 20
0
        public void XAndyAreNotEqual_KeyDifferent()
        {
            Face face = Auxilaries.RandomFace();
            KeyValuePair <int, Face> x = new KeyValuePair <int, Face>(0, face);
            KeyValuePair <int, Face> y = new KeyValuePair <int, Face>(1, face);

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.AreNotEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
Ejemplo n.º 21
0
        public void TestHasNext_HasNext()
        {
            HalfEdge edge = Auxilaries.RandomHalfEdge();
            HalfEdge next = Auxilaries.RandomHalfEdge();

            edge.Next = next;

            Assert.IsTrue(edge.HasNext);
        }
Ejemplo n.º 22
0
        public void TestHasDestination_HasDestination()
        {
            HalfEdge edge = Auxilaries.RandomHalfEdge();
            HalfEdge twin = Auxilaries.RandomHalfEdge();

            edge.Twin = twin;

            Assert.IsTrue(edge.HasDestination);
        }
Ejemplo n.º 23
0
        public void TestEquals_PositionNotEqual()
        {
            Vertex thisVertex  = Auxilaries.RandomVertex();
            Vertex otherVertex = Auxilaries.RandomVertex();

            Assert.IsFalse(thisVertex.Equals(otherVertex));
            Assert.IsFalse(otherVertex.Equals(thisVertex));
            Assert.AreNotEqual(thisVertex, otherVertex);
        }
Ejemplo n.º 24
0
        public void XAndyAreNotEqual_ValueDifferent()
        {
            int idx = 2;
            KeyValuePair <int, Face> x = new KeyValuePair <int, Face>(idx, Auxilaries.RandomFace());
            KeyValuePair <int, Face> y = new KeyValuePair <int, Face>(idx, Auxilaries.RandomFace());

            Assert.IsFalse(comparer.Equals(x, y));
            Assert.AreNotEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
        public void DuplicateVector()
        {
            Vector3 vector = Auxilaries.RandomPosition();

            Vector3 actual = vector.Duplicate();

            Assert.AreEqual(vector, actual);
            Assert.AreNotSame(vector, actual);
        }
Ejemplo n.º 26
0
        public void TestCompareTo_ObjNull()
        {
            Face face = Auxilaries.RandomFace();

            int expected = 1;
            int actual   = face.CompareTo(null);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 27
0
        public void TestCompareTo_ObjNull()
        {
            Vertex vertex = Auxilaries.RandomVertex();

            int expected = 1;
            int actual   = vertex.CompareTo(null);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 28
0
        public void XAndyAreEqual()
        {
            Vertex   positon = Auxilaries.RandomVertex();
            HalfEdge x       = new HalfEdge(positon);
            HalfEdge y       = new HalfEdge(positon);

            Assert.IsTrue(comparer.Equals(x, y));
            Assert.AreEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }
Ejemplo n.º 29
0
        public void TestAddIncidentEdges_ReplicateSegmentationFault()
        {
            Vertex v1 = Auxilaries.RandomVertex();
            Vertex v2 = Auxilaries.RandomVertex();
            Vertex v3 = Auxilaries.RandomVertex();

            HalfEdge e11 = new HalfEdge(v1);
            HalfEdge e12 = new HalfEdge(v2);
            HalfEdge e31 = new HalfEdge(v3);
            HalfEdge e32 = new HalfEdge(v1);
            HalfEdge e41 = new HalfEdge(v3);
            HalfEdge e42 = new HalfEdge(v2);

            e11.Twin = e12;
            e12.Twin = e11;
            e31.Twin = e32;
            e32.Twin = e31;
            e41.Twin = e42;
            e42.Twin = e41;

            e12.Next = e32;
            e32.Next = e41;
            e41.Next = e12;

            e12.Previous = e41;
            e32.Previous = e12;
            e41.Previous = e32;

            Face f2 = new Face(2, Auxilaries.RandomNormal());

            f2.AddOuterComponent(e32);
            f2.AddOuterComponent(e41);
            f2.AddOuterComponent(e12);

            e32.IncidentFace = f2;
            e41.IncidentFace = f2;
            e12.IncidentFace = f2;

            v1.AddIncidentEdge(e11);
            v1.AddIncidentEdge(e32);

            v2.AddIncidentEdge(e42);
            v2.AddIncidentEdge(e12);

            v3.AddIncidentEdge(e31);
            v3.AddIncidentEdge(e41);

            Assert.Contains(e11, v1.IncidentEdges);
            Assert.Contains(e32, v1.IncidentEdges);

            Assert.Contains(e42, v2.IncidentEdges);
            Assert.Contains(e12, v2.IncidentEdges);

            Assert.Contains(e31, v3.IncidentEdges);
            Assert.Contains(e41, v3.IncidentEdges);
        }
Ejemplo n.º 30
0
        public void XAndyAreEqual()
        {
            int     idx                = 3;
            Vector3 normal             = Auxilaries.RandomNormal();
            KeyValuePair <int, Face> x = new KeyValuePair <int, Face>(idx, new Face(idx, normal));
            KeyValuePair <int, Face> y = new KeyValuePair <int, Face>(idx, new Face(idx, normal));

            Assert.IsTrue(comparer.Equals(x, y));
            Assert.AreEqual(comparer.GetHashCode(x), comparer.GetHashCode(y));
        }