我在写一个C#程序,它有一个立方体对象,允许用户在X轴和Z轴上移动它。不过,我希望他们能够旋转它。C#旋转矩阵
我矩阵的定义是这样:public double[, ] matrix = new double[4, 4];
因此,例如,我能够通过这个代码来缩放立方体。
public void initAsScalingMatrix(double sx, double sy, double sz) {
initAsIdentityMatrix();
matrix[0, 0] = sx; // scale x
matrix[1, 1] = sy; // scale y
matrix[2, 2] = sz; // scale z
matrix[3, 3] = 1;
}
所以我的问题是。我怎样才能使用相同的方法绕着例如x轴旋转立方体?
编辑---
嗨,
我想通了如何旋转它,但它是从在左上角的方式这样做。
matrix[0, 0] = Math.Cos(rz);
matrix[0, 1] = Math.Sin(rz);
matrix[1, 0] = -(Math.Sin(rz));
matrix[1, 1] = Math.Cos(rz);
它怎么会从中心旋转?
也许它只是我,但我不明白你的代码是如何工作的。请解释一下,矩阵中的数字意味着什么。 – Ari 2013-03-13 09:51:10
要使它从中心旋转,首先需要对其进行翻译以便场景的中心位于原点,然后应用旋转矩阵,然后将场景翻译回其原始位置。 – antonijn 2013-03-13 09:59:29