2x2矩陣相乘模版


由於Unity只有4x4矩陣,今天要做一個2x2矩陣的旋轉,居然忘了順序。故寫下作為模版記錄。

 

順序:

 

 

下面是使用其進行旋轉的C#代碼:

public struct Position
{
    public int X;
    public int Y;

    public override string ToString() { return "X: " + X + " Y: " + Y; }
}

void OnEnable()//Execute
{
    var position = new Position() { X = 1, Y = 0 };
    var anchor = new Position() { X = 0, Y = 0 };

    Debug.Log("position: " + position);//print position: X: 1 Y: 0
    position = Rotation(90, position, anchor);
    Debug.Log("position rot: " + position);//print position rot: X: 0 Y: 1
}

Position Rotation(float rotValue, Position pos, Position anchor)
{
    var matrix00 = Mathf.Cos(rotValue * Mathf.Deg2Rad);
    var matrix01 = -Mathf.Sin(rotValue * Mathf.Deg2Rad);
    var matrix10 = Mathf.Sin(rotValue * Mathf.Deg2Rad);
    var matrix11 = Mathf.Cos(rotValue * Mathf.Deg2Rad);

    var x = (float)pos.X - anchor.X;
    var y = (float)pos.Y - anchor.Y;

    var rx = matrix00 * x + matrix01 * y;
    var ry = matrix10 * x + matrix11 * y;

    x = anchor.X + rx;
    y = anchor.Y + ry;

    var intX = Mathf.RoundToInt(x);
    var intY = Mathf.RoundToInt(y);

    return new Position() { X = intX, Y = intY };
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM