Расположение квадратов "ребро к ребру"

В моем не большом проекте есть 2 квадрата, которые расположены "ребром к ребру". Но к сожалению при повороте этих объектов (стоит заметить, что точка поворота находится на левом верхнем углу квадрата) их положение относительно друг друга меняется. Мне нужно получить формулу, с которой зная координату первого квадрата, угла поворота и размера ребра я бы мог узнать координаты позиции второго квадрата, чтобы он был присланен к тому же ребру, то есть сохраняя целостность фигуры образованной двумя квадратами.

Возможное решение этой проблемы не относится к какому-либо языку и библиотеке, но в теги я добавил sfml,т.к именно его и использую.


Ответы (1 шт):

Автор решения: norix

Суть в том, чтобы при отрисовке, трансформация второго квадрата считалась относительно первого. Для этого, рисуя второй квадрат, перемножаем его матрицу с матрицей первого.

Не особо работал с SFML, но выглядеть должно примерно так:

// ... ...
sf::Transform a; // матрица первого 
sf::Transform b; // матрица второго
b.setPosition(x,y); // двигаем второй, чтобы он соприкасался ребром с первым

// ... В цикле ...
a.setRotation(t); // вращаем первый квадрат
Draw(renderTarget, a); // первый квадрат рисуем как обычно
Draw(renderTarget, a * b); // при отрисовке второго, умножаем его матрицу с первым (порядок умножения важен)
→ Ссылка