Итак, у меня есть форма, и я хочу повернуть ее относительно оси y.Я уверен, что моя матрица вращения правильная, вот как выглядит матрица вращения в нашем руководстве:
И вот код, который я реализовал:
public static void rotate3Dy(float[] xCoords, float[] yCoords, float[] zCoords, float angle) {
float cosine_angle = (float) Math.cos(angle);
float sine_angle = (float) Math.sin(angle);
for (int i = 0; i < yCoords.length; i++) {
xCoords[i] = (xCoords[i] * cosine_angle) + (zCoords[i] * sine_angle) + 0;
zCoords[i] = (-xCoords[i] * sine_angle) + (zCoords[i] * cosine_angle) + 0;
}
}
Вращение формы вверх / вниз / влево / вправо само по себе выглядит хорошо, но когда я поворачиваю ее влево или вправо после вращения вверх / вниз, она начинает перекоситься.
Что я здесь упускаю / делаю неправильно?