예제 #1
0
 public void TestPyramid()
 {
     Vector3 v0 = v(-15.1, 11, 0);
       Vector3 v1 = v(20, 11, 0);
       Vector3 v2 = v(20, -20, 0);
       Vector3 v3 = v(-15,-20,-5.3e-14);
       Vector3 v4 = v(20, -0.8, 23);
       ColoredTriangleSoup expected = new ColoredTriangleSoup();
       expected.Add(t(v0, v1, v2));
       expected.Add(t(v1, v2, v4));
       expected.Add(t(v2, v3, v4));
       expected.Add(t(v0, v1, v4));
       expected.Add(t(v0, v3, v4));
       expected.Add(t(v0, v2, v3));
       expected.Add(t(v0, v2, v4));
       ColoredTriangleSoup result = PlyLoader.FromString(pyramid);
       Assert.AreEqual(expected, result);
     /*
     3 0 1 2
     3 1 2 4
     3 2 3 4
     3 0 1 4
     3 0 3 4
     3 0 2 3
     3 0 2 4          */
 }
예제 #2
0
        private static ColoredTriangleSoup ComputeSoup(string data, int numVertices, int numFaces)
        {
            string[] lines
            = data.Trim().Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
              List<string> filteredList = new List<string>();
              foreach (string line in lines)
            if (line.Trim() != "")
              filteredList.Add(line.Trim());

              // Find vector3's first
              Vector3[] vs = new Vector3[numVertices];
              for (int v = 0; v < vs.Length; v++)
            vs[v] = ParseVector3(filteredList[v]);

              ColoredTriangleSoup soup = new ColoredTriangleSoup();
              for (int f = 0; f < numFaces; f++)
              {
            int i, j, k;
            FindFaceIndices(filteredList[f+numVertices], out i, out j, out k);
            ColoredTriangle tri = new ColoredTriangle(Color.White,
              new Triangle(vs[i], vs[j], vs[k]));
            soup.Add(tri);
              }

              return soup;
        }
예제 #3
0
 private static void AddUnitRight(ColoredTriangleSoup soup)
 {
     soup.Add(new ColoredTriangle(
     Color.White,
     new Triangle(v(1, 0, 0), v(1, 1, 0), v(1, 1, 1))));
       soup.Add(new ColoredTriangle(
     Color.White,
     new Triangle(v(1, 0, 0), v(1, 1, 1), v(1, 0, 1))));
 }
예제 #4
0
 private static void AddUnitCube(ColoredTriangleSoup soup)
 {
     AddUnitBottom(soup);
       AddUnitTop(soup);
       AddUnitLeft(soup);
       AddUnitRight(soup);
       AddUnitFront(soup);
       AddUnitBack(soup);
 }
예제 #5
0
 public static void DrawSoup(ColoredTriangleSoup soup)
 {
     GL.Begin(BeginMode.Triangles);
       foreach (ColoredTriangle tri in soup)
       {
     GL.Color3(tri.Color);
     GL.Normal3(tri.Triangle.Normal);
     GL.Vertex3(tri.Triangle.P1);
     GL.Vertex3(tri.Triangle.P2);
     GL.Vertex3(tri.Triangle.P3);
       }
       GL.End();
 }
 public void Enumeration()
 {
     ColoredTriangle t1 = new ColoredTriangle(Color.Black, TriangleFixture.ConstructTriangle());
       ColoredTriangle t2 = new ColoredTriangle(Color.White, TriangleFixture.ConstructTriangle());
       ColoredTriangleSoup soup = new ColoredTriangleSoup();
       soup.Add(t1);
       soup.Add(t2);
       List<ColoredTriangle> expected = new List<ColoredTriangle>();
       expected.Add(t1);
       expected.Add(t2);
       List<ColoredTriangle> result = new List<ColoredTriangle>();
       foreach (ColoredTriangle tri in soup)
     result.Add(tri);
       CollectionAssert.AreEqual(expected, result);
 }
예제 #7
0
 public static ColoredTriangleSoup Generate(Color color, float side)
 {
     ColoredTriangleSoup soup = new ColoredTriangleSoup();
       AddUnitCube(soup);
       soup.Map(delegate(ColoredTriangle triangle)
       {
     ColoredTriangle newTri = ScaleTriangle(triangle, side);
     return new ColoredTriangle(color, newTri.Triangle);
       });
       //for (int i = 0; i < 16; i++)
       //{
       //  ColoredTriangle tri = soup[i];
       //  ColoredTriangle scaledTri = ScaleTriangle(tri, side);
       //  soup[i] = scaledTri;
       //}
       return soup;
 }
예제 #8
0
 public void Test1()
 {
     ColoredTriangleSoup soup = PlyLoader.FromString(
     @"ply
     element vertex 3
     element face 1
     end_header
     0 0 0
     1 1 1
     2 2 2
     3 0 1 2
     ");
       ColoredTriangleSoup expected = new ColoredTriangleSoup();
       expected.Add(new ColoredTriangle(Color.White, new Triangle(
     v(0, 0, 0),
     v(1, 1, 1),
     v(2, 2, 2))));
       Assert.AreEqual(expected, soup);
 }
 public void Map()
 {
     ColoredTriangle t1 = new ColoredTriangle(Color.Black, TriangleFixture.ConstructTriangle());
       ColoredTriangle t2 = new ColoredTriangle(Color.White, TriangleFixture.ConstructTriangle());
       ColoredTriangleSoup soup = new ColoredTriangleSoup();
       soup.Add(t1);
       soup.Add(t2);
       soup.Map(delegate(ColoredTriangle triangle)
       {
     return new ColoredTriangle(Color.Yellow, triangle.Triangle);
       });
       List<ColoredTriangle> expected = new List<ColoredTriangle>();
       ColoredTriangle t1b = new ColoredTriangle(Color.Yellow, TriangleFixture.ConstructTriangle());
       ColoredTriangle t2b = new ColoredTriangle(Color.Yellow, TriangleFixture.ConstructTriangle());
       expected.Add(t1b);
       expected.Add(t2b);
       List<ColoredTriangle> result = new List<ColoredTriangle>();
       foreach (ColoredTriangle tri in soup)
     result.Add(tri);
       CollectionAssert.AreEqual(expected, result);
 }
 public void Init()
 {
     cts = ConstructSoup();
 }
 public static ColoredTriangleSoup ConstructSoup()
 {
     ColoredTriangleSoup soup = new ColoredTriangleSoup();
       soup.Add(ColoredTriangleFixture.ConstructColoredTriangle());
       return soup;
 }
예제 #12
0
 private void DrawSoup(ColoredTriangleSoup soup)
 {
     GLUtil.DrawSoup(soup);
 }