示例#1
0
        /// <summary>
        /// Calcul le produit d'un vecteur par une matrice 4*4
        /// </summary>
        /// <param name="v"></param>
        /// <returns>le vecteur résultant de l'opération</returns>
        public Vec3 productOneVector(Vec3 v)
        {
            Vec4 vt = new Vec4(v.X, v.Y, v.Z, 0);


            return(new Vec3(vt.X * C1.X + vt.Y * C2.X + vt.Z * C3.X + vt.T * C4.X,
                            vt.X * C1.Y + vt.Y * C2.Y + vt.Z * C3.Y + vt.T * C4.Y,
                            vt.X * C1.Z + vt.Y * C2.Z + vt.Z * C3.Z + vt.T * C4.Z
                            ));
        }
示例#2
0
        /// <summary>
        /// Calcul le produit d'un point par une matrice 4*4
        /// </summary>
        /// <param name="p"></param>
        /// <returns>le vecteur résultant de l'opération</returns>
        public Point productOnePoint(Point p)
        {
            Vec4 vt = new Vec4(p.X, p.Y, p.Z, 1);


            return(new Point(vt.X * C1.X + vt.Y * C2.X + vt.Z * C3.X + vt.T * C4.X,
                             vt.X * C1.Y + vt.Y * C2.Y + vt.Z * C3.Y + vt.T * C4.Y,
                             vt.X * C1.Z + vt.Y * C2.Z + vt.Z * C3.Z + vt.T * C4.Z
                             ));
        }
示例#3
0
        /// <summary>
        /// Produit matriciel gauche.
        /// </summary>
        /// <param name="m">Résultat de l'opération </param>
        /// <returns></returns>
        public Mat4 RightMatrixProduct(Mat4 m)
        {
            Vec4 vl1, vl2, vl3, vl4;

            vl1 = new Vec4(C1.X, C2.X, C3.X, C4.X);
            vl2 = new Vec4(C1.Y, C2.Y, C3.Y, C4.Y);
            vl3 = new Vec4(C1.Z, C2.Z, C3.Z, C4.Z);
            vl4 = new Vec4(C1.T, C2.T, C3.T, C4.T);

            return(new Mat4(
                       new Vec4(vl1.dot(m.C1), vl2.dot(m.C1), vl3.dot(m.C1), vl4.dot(m.C1)),
                       new Vec4(vl1.dot(m.C2), vl2.dot(m.C2), vl3.dot(m.C2), vl4.dot(m.C2)),
                       new Vec4(vl1.dot(m.C3), vl2.dot(m.C3), vl3.dot(m.C3), vl4.dot(m.C3)),
                       new Vec4(vl1.dot(m.C4), vl2.dot(m.C4), vl3.dot(m.C4), vl4.dot(m.C4))
                       ));
        }
示例#4
0
文件: Vec4.cs 项目: xheugue/RayTracer
 /// <summary>
 /// Effectue le produit scalaire entre les 2 vecteurs.
 /// </summary>
 /// <param name="v"></param>
 /// <returns>Résultat du produit scalaire des 2 vecteurs</returns>
 public double dot(Vec4 v)
 {
     return((this.X * v.X) + (this.Y * v.Y) + (this.Z * v.Z) + (this.T * v.T));
 }