C#用矩阵实现物体旋转

** C#中,三种变换矩阵分为三种:缩放,平移,以及旋转。**
其中旋转是三种变化矩阵中最复杂的一种
用数学角度分析:
这是实现物体绕x轴旋转一定角度C#用矩阵实现物体旋转_第1张图片
这是实现物体绕y轴旋转一定角度
C#用矩阵实现物体旋转_第2张图片
这是实现物体绕z轴旋转一定角度

C#用矩阵实现物体旋转_第3张图片
言归正传,C#中为我们的矩形运算做出了规则,所以我们只需要写出Matrix4x4这个规定的矩形之后点出之后的一系类,旋转,平移,缩放的应用,旋转可以使用Euler Quaternion 以及Matrix4x4(矩阵旋转),但Matrix4x4是最不容易出现错误的,下面用代码来给大家解释这个Matrix4x4旋转的具体应用。
C#用矩阵实现物体旋转_第4张图片

public Vector3 Position;
    public Vector3 Euler;
    public Vector3 Scale;
    public   MeshFilter Mesh;
    Vector3[] Old;
    Vector3[] New;
    void Start()
    {
        Scale = new Vector3(1, 1,1);//规定大小为一
        Mesh = GetComponent();//获取组件
        Old = Mesh.mesh.vertices;//获取顶点数据
        New = new Vector3[Old.Length];//给数组赋值一个长度
    }
    void Update()
    {
        Quaternion rotation = Quaternion.Euler(Euler.x, Euler.y, Euler.z);//欧拉角转换为四元数,赋值
        Matrix4x4 m = Matrix4x4.TRS(Position, rotation, Scale);//设置 平移 大小 缩放
        for (int i = 0; i < Old.Length; i++)//将顶点数据给新数组
        {

            New[i] = m.MultiplyPoint3x4(Old[i]);//将矩阵应用于各各顶点
        }
        Mesh.mesh.vertices = New;//将变化后的顶点返回给物体
    }

你可能感兴趣的:(C#用矩阵实现物体旋转)