Ejemplo n.º 1
0
        public static OrthoNormalBasis MakeFromW(Vector3D w)
        {
            OrthoNormalBasis onb = new OrthoNormalBasis();

            w.Normalize();
            onb.w = w;
            if ((Math.Abs(onb.w.X) < Math.Abs(onb.w.Y)) && (Math.Abs(onb.w.X) < Math.Abs(onb.w.Z)))
            {
                onb.v.X = 0;
                onb.v.Y = onb.w.Z;
                onb.v.Z = -onb.w.Y;
            }
            else if (Math.Abs(onb.w.Y) < Math.Abs(onb.w.Z))
            {
                onb.v.X = onb.w.Z;
                onb.v.Y = 0;
                onb.v.Z = -onb.w.X;
            }
            else
            {
                onb.v.X = onb.w.Y;
                onb.v.Y = -onb.w.X;
                onb.v.Z = 0;
            }
            onb.v.Normalize();
            onb.u = onb.v ^ onb.w;
            return(onb);
        }
Ejemplo n.º 2
0
 public static OrthoNormalBasis MakeFromWV(Vector3D w, Vector3D v)
 {
     OrthoNormalBasis onb = new OrthoNormalBasis();
     w.Normalize();
     onb.w = w;
     onb.u = onb.w ^ v;
     onb.u.Normalize();
     onb.v = (onb.w ^ onb.u);
     return onb;
 }
Ejemplo n.º 3
0
        public static OrthoNormalBasis MakeFromWV(Vector3D w, Vector3D v)
        {
            OrthoNormalBasis onb = new OrthoNormalBasis();

            w.Normalize();
            onb.w = w;
            onb.u = onb.w ^ v;
            onb.u.Normalize();
            onb.v = (onb.w ^ onb.u);
            return(onb);
        }
Ejemplo n.º 4
0
 protected Camera(Point3D eye, Point3D lookAt, Vector3D up, float fov, float resX, float resY)
 {
     this.ResX = resX;
     this.ResY = resY;
     this.aspect = resX / resY;
     this.eye = eye;
     this.Fov = fov;
     this.up = up;
     this.LookAt = lookAt;
     this.basis = OrthoNormalBasis.MakeFromWV(eye - lookAt, up);
     this.au = (float) Math.Tan(fov * 0.5f);
     this.av = this.au * 1.0f / this.aspect;
 }
Ejemplo n.º 5
0
 public static OrthoNormalBasis MakeFromW(Vector3D w)
 {
     OrthoNormalBasis onb = new OrthoNormalBasis();
     w.Normalize();
     onb.w = w;
     if ((Math.Abs(onb.w.X) < Math.Abs(onb.w.Y)) && (Math.Abs(onb.w.X) < Math.Abs(onb.w.Z))) {
         onb.v.X = 0;
         onb.v.Y = onb.w.Z;
         onb.v.Z = -onb.w.Y;
     } else if (Math.Abs(onb.w.Y) < Math.Abs(onb.w.Z)) {
         onb.v.X = onb.w.Z;
         onb.v.Y = 0;
         onb.v.Z = -onb.w.X;
     } else {
         onb.v.X = onb.w.Y;
         onb.v.Y = -onb.w.X;
         onb.v.Z = 0;
     }
     onb.v.Normalize();
     onb.u = onb.v ^ onb.w;
     return onb;
 }