예제 #1
0
        public void When_CalculateCrossOfParallel_Expect_Zero()
        {
            Vect3 v1 = new Vect3(1, 2, 3);
            Vect3 v2 = new Vect3(2, 4, 6);

            Assert.AreEqual(Vect3.Cross(v1, v2), Vect3.Zero);
        }
예제 #2
0
        public void When_CrossWithNormalPlane_Expect_StartVector()
        {
            Vect3 vect1 = new Vect3(1, 2, 3);
            Tuple <Vect3, Vect3> plane = vect1.GetNormalPlane();
            Vect3 vect2 = Vect3.Cross(plane.Item1, plane.Item2);

            Assert.AreEqual(vect1.GetNormalized(), vect2.GetNormalized());
        }
예제 #3
0
        public void When_CalculateCrossOfTwoVectors_Expect_OrthogonalToBoth()
        {
            Vect3 v1 = new Vect3(1, 2, 3);
            Vect3 v2 = new Vect3(3, 2, 1);
            Vect3 v3 = new Vect3(-4, 8, -4);

            Assert.AreEqual(Vect3.Cross(v1, v2), v3);
        }
예제 #4
0
        public void When_AddFaceIncorrectNrOfVertices_Expect_Exception_Helper()
        {
            Vertex    vertex1 = new Vertex(1, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Component comp    = new Component();

            int[] vertices = new int[2];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate, vertex1.coordinate - new Vect3(5, 5, 1));
            int   a      = comp.CreateFace(normal, vertices);
        }
예제 #5
0
        public void When_AddComponent_Expect_Added()
        {
            Structure struc  = new Structure();
            Component comp   = new Component();
            int       a      = comp.CreateVertex(1, 2, 3);
            int       b      = comp.CreateVertex(2, 2, 2);
            int       c      = comp.CreateVertex(5, 1, 3);
            Vect3     normal = Vect3.Cross(new Vect3(1, 2, 3) - new Vect3(2, 2, 2), new Vect3(1, 2, 3) - new Vect3(5, 1, 3));

            comp.CreateFace(normal, new int[] { a, b, c });

            struc.addComponent(comp);
            Assert.AreEqual(struc.components.Count, 1);
            Assert.AreEqual(struc.components[0].faces.Count, 1);
            Assert.AreEqual(struc.components[0].vertices.Count, 3);
        }
예제 #6
0
        public void When_GetVertexIndices_Expect_CorrectVertexIndices()
        {
            Vertex    vertex1 = new Vertex(1, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Vertex    vertex3 = new Vertex(3, 8, 1);
            Component comp    = new Component();

            int[] vertices = new int[3];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            vertices[2] = comp.AddVertex(vertex3);
            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate, vertex1.coordinate - vertex3.coordinate);

            int faceIndex = comp.CreateFace(normal, vertices);

            CollectionAssert.AreEquivalent(comp.GetVertexIndicesFromFace(faceIndex), vertices);
        }
예제 #7
0
        public void When_CreateFaceFromList_Expect_FaceAdded()
        {
            Vertex     vertex1  = new Vertex(1, 2, 3);
            Vertex     vertex2  = new Vertex(2, 2, 2);
            Vertex     vertex3  = new Vertex(3, 2, 1);
            Component  comp     = new Component();
            List <int> vertices = new List <int>();

            vertices.Add(comp.AddVertex(vertex1));
            vertices.Add(comp.AddVertex(vertex2));
            vertices.Add(comp.AddVertex(vertex3));

            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate, vertex1.coordinate - vertex3.coordinate);
            int   a      = comp.CreateFace(normal, vertices);

            Assert.AreEqual(comp.faces.Count, 1);
            CollectionAssert.AreEquivalent(comp.GetFace(a).vertexIndices, vertices.ToArray());
        }
예제 #8
0
        public void When_CreateFaceFromArray_Expect_FaceAdded()
        {
            Vertex    vertex1 = new Vertex(5, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Vertex    vertex3 = new Vertex(8, 2, 2);
            Component comp    = new Component();

            int[] vertices = new int[3];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            vertices[2] = comp.AddVertex(vertex3);

            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate, vertex1.coordinate - vertex3.coordinate);
            int   a      = comp.CreateFace(normal, vertices);

            Assert.AreEqual(comp.faces.Count, 1);
            CollectionAssert.AreEquivalent(comp.GetFace(a).vertexIndices, vertices);
        }
예제 #9
0
        public void When_CreateFaceWithoutNormal_Expect_Normal()
        {
            Vertex    vertex1 = new Vertex(1, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Vertex    vertex3 = new Vertex(3, 8, 1);
            Component comp    = new Component();

            int[] vertices = new int[3];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            vertices[2] = comp.AddVertex(vertex3);

            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate,
                                       vertex1.coordinate - vertex3.coordinate);

            int a = comp.CreateFace(normal, vertices);

            Assert.AreEqual(comp.GetFace(a).normal, normal);
        }
예제 #10
0
        public void When_CreateFace_Expect_FaceAddedToVertices()
        {
            Vertex    vertex1 = new Vertex(1, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Vertex    vertex3 = new Vertex(3, 8, 1);
            Component comp    = new Component();

            int[] vertices = new int[3];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            vertices[2] = comp.AddVertex(vertex3);

            Vect3 normal = Vect3.Cross(new Vect3(1, 2, 3) - new Vect3(2, 2, 2), new Vect3(1, 2, 3) - new Vect3(3, 8, 1));
            int   a      = comp.CreateFace(normal, vertices);

            Assert.AreEqual(comp.GetFaceIndicesFromVertex(vertices[0])[0], a);
            Assert.AreEqual(comp.GetFaceIndicesFromVertex(vertices[1])[0], a);
            Assert.AreEqual(comp.GetFaceIndicesFromVertex(vertices[2])[0], a);
        }
예제 #11
0
        public void When_AddFace_Expect_FaceAddedToVertices()
        {
            Vertex    vertex1 = new Vertex(10, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Vertex    vertex3 = new Vertex(3, 2, 1);
            Component comp    = new Component();

            int[] vertices = new int[3];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            vertices[2] = comp.AddVertex(vertex3);
            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate, vertex1.coordinate - vertex3.coordinate);
            Face  f      = new Face(normal, vertices);

            int a = comp.AddFace(f);

            Assert.AreEqual(comp.GetFaceIndicesFromVertex(vertices[0])[0], a);
            Assert.AreEqual(comp.GetFaceIndicesFromVertex(vertices[1])[0], a);
            Assert.AreEqual(comp.GetFaceIndicesFromVertex(vertices[2])[0], a);
        }
예제 #12
0
        public void When_GetFace_Expect_CorrectFace()
        {
            Vertex    vertex1 = new Vertex(1, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Vertex    vertex3 = new Vertex(3, 8, 1);
            Component comp    = new Component();

            int[] vertices = new int[3];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            vertices[2] = comp.AddVertex(vertex3);

            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate,
                                       vertex1.coordinate - vertex3.coordinate);

            Face face      = new Face(normal, vertices);
            int  faceIndex = comp.AddFace(face);

            Assert.AreEqual(comp.GetFace(faceIndex), face);
        }
예제 #13
0
        public Component HelpFunctionForNeighbouringFaces()
        {
            Component comp    = new Component();
            Vertex    vertex0 = new Vertex(1, 2, 3);
            Vertex    vertex1 = new Vertex(8, 12, 3);
            Vertex    vertex2 = new Vertex(1, 5, 1);
            Vertex    vertex3 = new Vertex(4, 1, 3);
            Vertex    vertex4 = new Vertex(10, 11, 7);
            Vertex    vertex5 = new Vertex(8, 3, 5);
            Vertex    vertex6 = new Vertex(9, 7, 8);
            Vertex    vertex7 = new Vertex(5, 6, 2);
            Vertex    vertex8 = new Vertex(3, 4, 11);

            comp.AddVertex(vertex0);
            comp.AddVertex(vertex1);
            comp.AddVertex(vertex2);
            comp.AddVertex(vertex3);
            comp.AddVertex(vertex4);
            comp.AddVertex(vertex5);
            comp.AddVertex(vertex6);
            comp.AddVertex(vertex7);
            comp.AddVertex(vertex8);

            Vect3 normal0 = Vect3.Cross(vertex0.coordinate - vertex1.coordinate, vertex0.coordinate - vertex2.coordinate);
            Vect3 normal1 = Vect3.Cross(vertex3.coordinate - vertex4.coordinate, vertex3.coordinate - vertex5.coordinate);
            Vect3 normal2 = Vect3.Cross(vertex4.coordinate - vertex5.coordinate, vertex4.coordinate - vertex8.coordinate);
            Vect3 normal3 = Vect3.Cross(vertex4.coordinate - vertex6.coordinate, vertex4.coordinate - vertex8.coordinate);
            Vect3 normal4 = Vect3.Cross(vertex6.coordinate - vertex7.coordinate, vertex6.coordinate - vertex8.coordinate);
            Vect3 normal5 = Vect3.Cross(vertex5.coordinate - vertex7.coordinate, vertex5.coordinate - vertex8.coordinate);

            int face0 = comp.CreateFace(normal0, new int[] { 0, 1, 2 });
            int face1 = comp.CreateFace(normal1, new int[] { 3, 4, 5 });
            int face2 = comp.CreateFace(normal2, new int[] { 4, 5, 8 });
            int face3 = comp.CreateFace(normal3, new int[] { 4, 6, 8 });
            int face4 = comp.CreateFace(normal4, new int[] { 6, 7, 8 });
            int face5 = comp.CreateFace(normal5, new int[] { 5, 7, 8 });

            return(comp);
        }
예제 #14
0
        public void When_CreateDeepCopy_Expect_SeparateEqualInstance()
        {
            Vertex    vertex1 = new Vertex(1, 2, 3);
            Vertex    vertex2 = new Vertex(2, 2, 2);
            Vertex    vertex3 = new Vertex(3, 8, 1);
            Component comp    = new Component();

            int[] vertices = new int[3];
            vertices[0] = comp.AddVertex(vertex1);
            vertices[1] = comp.AddVertex(vertex2);
            vertices[2] = comp.AddVertex(vertex3);

            Vect3 normal = Vect3.Cross(vertex1.coordinate - vertex2.coordinate,
                                       vertex1.coordinate - vertex3.coordinate);

            Face face      = new Face(normal, vertices);
            int  faceIndex = comp.AddFace(face);

            Component compCopy = comp.DeepCopy();

            for (int i = 0; i < comp.vertices.Count; i++)
            {
                Assert.AreEqual(comp.vertices[i], compCopy.vertices[i]);
            }

            for (int i = 0; i < comp.faces.Count; i++)
            {
                Assert.AreEqual(comp.faces[i], compCopy.faces[i]);
            }

            Assert.AreEqual(comp, compCopy);

            compCopy.vertices[0].coordinate.x = 99;

            Assert.AreNotEqual(comp, compCopy);
        }
예제 #15
0
 public void When_CalculateCrossOfOrthogonal_Expect_Orthogonal()
 {
     Assert.AreEqual(Vect3.Cross(Vect3.Up, Vect3.Forward), Vect3.Right);
 }
예제 #16
0
        public void When_CalculateCrossOfSelf_Expect_Zero()
        {
            Vect3 v1 = new Vect3(1, 2, 3);

            Assert.AreEqual(Vect3.Cross(v1, v1), Vect3.Zero);
        }