Я хотел бы сделать 2D-движок игры, который сильно ориентирован на векторы. Я также хотел бы использовать матрицу преобразования для перевода, поворота и масштабирования спрайтов, которые я бы хотел каким-то образом загрузить.Как реализовать матрицу 2D-преобразования?
Я пытаюсь сделать это без внешней библиотеки на случай, если кто-то задается вопросом.
Кто-нибудь знает, если я даже дистанционно в правильном направлении с этим? Применение преобразования к координатам изображений? И какие данные мне нужно вводить и выводить из моей матрицы? Я понимаю, что такое матрицы, но мой опыт в этом ограничен, и я не знаю следующего шага.
В любой момент это немного абстрактно, и я бы хотел, чтобы я мог объяснить это лучше.
All my source code: mainComponent, vector2f, matrix3f and transform.
Очерк того, что находится в классах: mainComponent довольно очевиден, просто Main() в минуту. Vector2f имеет базовую математику, геттеры и сеттеры для 2D-векторов (float). Matrix3f имеет инициализацию матриц трансляции, вращения и масштабирования и метод умножения. И я понятия не имею, что Transform действительно делает, все, что я знаю, это то, что там мои матрицы устанавливаются, берут свои входы и размножаются вместе. Не знаю, что делать, чтобы прикрепить его к чему-то на экране, хотя я могу создать базовый элемент массива пикселей BufferedImage, который может быть тем, что я хочу.
Следующая проблема загружается в спрайтов:/
Вы умножаете исходные координаты объекта (v.g. vertex) на матрицу преобразования и получаете новые координаты функции. – SJuan76
вправо, поэтому мне нужно превратить свои координаты в однородную матрицу 3x1, чтобы ее можно было умножить? (и наоборот) –
Да, это так. Обычно вы просто используете матрицы как координаты, без конверсий. – SJuan76