这几天,在看Unity3D,很有意思,其中看到,第一人称控制器,就想看到里面的一些控制脚本是如何实现,才发现,学到的好多数据知识已经还给老师了,还好,走遍大江南北,跟着的书不多,唯一的二本高数没丢.

然后参考网上各个简洁明了的讲洁.

主要有http://my.csdn.net/cppyin 的从零实现3D图像引擎.

用此文只是用来记录一些向量,矩阵等的操作.没别的实际意义.会与我的学习来更新此文章.

1.求矩阵的逆矩阵。

type XMatrix3 =
    class 
        val m11:float
        val m12:float
        val m13:float
        val m21:float
        val m22:float
        val m23:float
        val m31:float
        val m32:float
        val m33:float
        //new (x11,x12,x21,x22) = XMatrix(this.m11 = x11;this.m12 = x12;this.m13 = 0.0;this.m21 = x21;this.m22 = x22;this.m23 = 0.0;this.m31 = 0.0;this.m32 = 0.0;this.m33 = 1.0)
        new (x11,x12,x13,x21,x22,x23,x31,x32,x33) = {m11 = x11;m12 = x12;m13 = x13;
                                                    m21 = x21;m22 = x22;m23 = x23;
                                                    m31 = x31;m32 = x32;m33 = x33}
        new (x11,x12,x21,x22) = {m11 = x11;m12 = x12;m13 = 0.0;
                                 m21 = x21;m22 = x22;m23 = 0.0;
                                 m31 = 0.0;m32 = 0.0;m33 = 1.0}
        //求行列式                         
        member r.Det = r.m11*(r.m22*r.m33 - r.m32*r.m23) - 
                       r.m12*(r.m21*r.m33 - r.m31*r.m23) + 
                       r.m13*(r.m21*r.m32 - r.m31*r.m22)
        member r.Inverse = 
            let det = r.Det
            let det_inv = 1.0/det
            new XMatrix3((r.m22*r.m33 - r.m32*r.m23)*det_inv,
                         -(r.m12*r.m33 - r.m32*r.m13)*det_inv,
                         (r.m12*r.m23 - r.m22*r.m13)*det_inv,
                         -(r.m21*r.m33 - r.m31*r.m23)*det_inv,
                         (r.m11*r.m33 - r.m31*r.m13)*det_inv,
                         -(r.m11*r.m23 - r.m21*r.m13)*det_inv,
                         (r.m21*r.m32 - r.m31*r.m22)*det_inv,
                         -(r.m11*r.m32 - r.m31*r.m12)*det_inv,
                         (r.m11*r.m22 - r.m21*r.m12)*det_inv)   
    end

let a = XMatrix3(1.0,2.0,-1.0,3.0,1.0,0.0,-1.0,0.0,-2.0)
let d = a.Det

let v = XMatrix3(3.0,-4.0,1.0,-2.0)
let s = v.Inverse
let ss = s.m11,s.m12,s.m21,s.m22
View Code

相关文章:

  • 2022-02-20
  • 2021-05-08
  • 2021-10-15
  • 2022-12-23
  • 2021-12-04
  • 2021-12-11
  • 2022-12-23
  • 2021-12-26
猜你喜欢
  • 2021-08-10
  • 2021-04-21
  • 2021-10-07
  • 2021-11-17
  • 2021-09-16
  • 2021-11-05
相关资源
相似解决方案