コード例 #1
0
        public void TestHit2()
        {
            double ta, tb;
            RenderItem ria, rib;
            for(int i = 0; i < TestParameters.BuildTest; i++) {
                int nt = Math.Max(2, Maths.Random(i));
                List<RenderItem> ris = new List<RenderItem>();
                for(int j = 0x00; j < nt; j++) {
                    ris.Add(new Triangle(Point3.Random(), Point3.Random(), Point3.Random(), null, null, null, null, null, null, null));
                }
                NaiveAccelerator na = new NaiveAccelerator(ris);
                GridAccelerator ga = new GridAccelerator(ris);
                for(int k = 0; k < TestParameters.RayTest; k++) {
                    Ray ray = Ray.Random();
                    ria = ga.CalculateHit(ray, out ta, double.PositiveInfinity);
                    rib = na.CalculateHit(ray, out tb, double.PositiveInfinity);
                    TestParameters.TestRIEqual(ray, ta, tb, ris, ria, rib);
                }

            }
        }
コード例 #2
0
 public void TestHit1()
 {
     Matrix4 M = new Matrix4();
     M.Shift(0.0d, 0.0d, 10.0d);
     LoaderObj lo = new LoaderObj();
     FileStream fs = File.Open("triceratops.obj", FileMode.Open, FileAccess.Read);
     lo.Load(null, fs);
     fs.Close();
     List<RenderItem> ris = new List<RenderItem>();
     lo.Inject(ris, M);
     NaiveAccelerator na = new NaiveAccelerator(ris);
     GridAccelerator ga = new GridAccelerator(ris);
     double ta, tb;
     RenderItem ria, rib;
     for(int i = 0; i < TestParameters.TriceratopsTest; i++) {
         Ray ray = Ray.Random();
         ria = ga.CalculateHit(ray, out ta, double.PositiveInfinity);
         rib = na.CalculateHit(ray, out tb, double.PositiveInfinity);
         TestParameters.TestRIEqual(ray, ta, tb, ris, ria, rib);
     }
 }