예제 #1
0
파일: Mesh.cs 프로젝트: gprokay/raytracer
 public void Scale(float x, float y, float z)
 {
     for (int i = 0; i < Vertices.Length; ++i)
     {
         Vertices[i].X = Vertices[i].X * x;
         Vertices[i].Y = Vertices[i].Y * y;
         Vertices[i].Z = Vertices[i].Z * z;
     }
     Bound = null;
 }
예제 #2
0
파일: Mesh.cs 프로젝트: gprokay/raytracer
        public void Move(Vector3 moveVector)
        {
            Center += moveVector;

            for (int i = 0; i < Vertices.Length; ++i)
            {
                Vertices[i] += moveVector;
            }

            Bound = null;
        }
예제 #3
0
파일: Mesh.cs 프로젝트: gprokay/raytracer
        public void Normalize()
        {
            var maxX = Vertices.Select(v => v.X).Max();
            var maxY = Vertices.Select(v => v.Y).Max();
            var maxZ = Vertices.Select(v => v.Z).Max();

            for (int i = 0; i < Vertices.Length; ++i)
            {
                Vertices[i].X = Vertices[i].X / maxX;
                Vertices[i].Y = Vertices[i].Y / maxY;
                Vertices[i].Z = Vertices[i].Z / maxZ;
            }
            Bound = null;
        }
예제 #4
0
파일: Mesh.cs 프로젝트: gprokay/raytracer
        public void Rotate(float x, float y, float z)
        {
            var rotX = Matrix4x4.CreateRotationX(x);
            var rotY = Matrix4x4.CreateRotationY(y);
            var rotZ = Matrix4x4.CreateRotationZ(z);

            for (int i = 0; i < Vertices.Length; ++i)
            {
                Vertices[i] = Vector3.Transform(Vertices[i], rotX);
                Vertices[i] = Vector3.Transform(Vertices[i], rotY);
                Vertices[i] = Vector3.Transform(Vertices[i], rotZ);
            }

            for (int i = 0; i < Normals.Length; ++i)
            {
                Normals[i] = Vector3.Transform(Normals[i], rotX);
                Normals[i] = Vector3.Transform(Normals[i], rotY);
                Normals[i] = Vector3.Transform(Normals[i], rotZ);
            }

            Bound = null;
        }
예제 #5
0
파일: Mesh.cs 프로젝트: gprokay/raytracer
 public void CalculateBounds(int slices = 1, float bias = 0.001f)
 {
     Bound = slices == 0 ? null : new MeshBound(this, slices, bias);
 }