/// <summary> /// Transforms point p (p.w is presumed 1.0) by matrix m. /// Projective transform is performed. Perspective Division is performed. /// </summary> public static __vmsub1type__ TransformPosProj(__nmtype__ m, __vmsub1type__ p) { __ftype__ s = (/*# mfields.Take(msub1).ForEach((fr, r) => { */ m.M__msub1____r__ * p.__fr__ /*#}, add);*/ + m.M__msub1____msub1__); s = 1 / s; return((TransformPos(m, p)) * s); }
/// <summary> /// Transforms point p (p.w is presumed 1.0) by this matrix. /// Projective transform is performed. /// </summary> public __vmsub1type__ TransformPosProj(__vmsub1type__ p) { return(TransformDir(p)); }
//# } else { // n != m /// <summary> /// Transforms point p (p.w is presumed 1.0) by matrix m. /// Projective transform is performed. /// </summary> public static __vmsub1type__ TransformPosProj(__nmtype__ m, __vmsub1type__ p) { return(TransformDir(m, p)); }
/// <summary> /// Transforms point p (p.w is presumed 1.0) by this matrix. /// Projective transform is performed. /// </summary> public __vmtype__ TransformPosProjFull(__vmsub1type__ p) { return(TransformPosProjFull(this, p)); }
/// <summary> /// Transforms point p (p.w is presumed 1.0) by matrix m. /// Projective transform is performed. /// </summary> public static __vmtype__ TransformPosProjFull(__nmtype__ m, __vmsub1type__ p) { return(new __vmtype__( /*# m.ForEach(s => { */ (/*# mfields.Take(msub1).ForEach((fr, r) => { */ m.M__s____r__ * p.__fr__ /*#}, add);*/ + m.M__s____msub1__) /*#}, comma);*/ )); }
/// <summary> /// Transforms point p (p.w is presumed 1.0) by transposed version of this matrix. /// No projective transform is performed. /// </summary> public __vmsub1type__ TransposedTransformPos(__vmsub1type__ p) { return(new __vmsub1type__( /*# msub1.ForEach(s => { */ /*# mfields.Take(msub1).ForEach((fr, r) => { */ M__r____s__ * p.__fr__ /*# }, add); */ + M__msub1____s__ /*# }, comma); */ )); }
//# if (n == m) { /// <summary> /// Transforms direction vector v (v.w is presumed 0.0) by transposed version of matrix m. /// </summary> public static __vmsub1type__ TransposedTransformDir(__nmtype__ m, __vmsub1type__ v) { return(new __vmsub1type__( /*# msub1.ForEach(s => { */ /*# mfields.Take(msub1).ForEach((fr, r) => { */ m.M__r____s__ * v.__fr__ /*# }, add); }, comma); */ )); }