首页 > 代码库 > 2x2矩阵相乘模版
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 }; }
2x2矩阵相乘模版
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。