我有这个 3x3 矩阵,我用它来执行基本的转换,如平移、缩放和旋转,但旋转部分不能正常工作。对于任何大于 30 度左右的角度,它看起来……很奇怪。
该方法如下所示:
public void rotate(float angle) {
double rads = angle * (Math.PI/180);
float sin = (float) Math.sin(rads);
float cos = (float) Math.cos(rads);
matrix[0][0] = cos;
matrix[0][1] = -sin;
matrix[1][0] = sin;
matrix[1][1] = cos;
}
以及应用转换的方法:
对于 X:
public float[] applyTransformX(float[] x, float[] y) {
float[] transformed = new float[x.length];
for(int i=0; i<x.length; i++) {
transformed[i] = (x[i] * matrix[0][0]) + (y[i] * matrix[0][1] + matrix[0][2]);
System.out.println((x[i] * matrix[0][0]) + (y[i] * matrix[0][1] + matrix[0][2]));
}
return transformed;
}
对于 Y:
public float[] applyTransformY(float[] x, float[] y) {
float[] transformed = new float[x.length];
for(int i=0; i<x.length; i++) {
transformed[i] = (x[i] * matrix[1][0]) + (y[i] * matrix[1][1] + matrix[1][2]);
}
return transformed;
}
我在这里缺少任何基本的东西吗?我知道我没有围绕一个固定点进行转换。这可能是我遇到这个问题的原因吗?
正如我所说,平移和缩放正在正常工作。