На языке матриц попробую изложить свою проблему.
У меня есть фигура. Нужно ее масштабировать относительно центра.
У меня есть готовая матрица для масштабирования относительно центра, обозначу ее буквой М1
Фигуру обозначу буквой Ф1
Итого, чтобы масштабировать фигуру мне нужно сделать следующее:
Ф2 = Ф1 * М1
Я получаю новые координаты Ф2
Дело в том, что я эти координаты не сохраняю. Движок отображения работает так: в фигуре хранятся координаты Ф1 и сама матрица М1.
Чтобы мне масштабировать фируру дальше, нужно создать вторую матрицу М2 и сделать следующую операцию
М3 = М1 * М2
Ф3 = Ф1 * М2
Ф3 это координаты фигуры уже послу двух операций масштабирования.
Внимание, проблема. Матрицу масштабирования я без ошибок создаю с учетом, что масштабирование делается относительно определенного центра.
Если я выше описанный цикл операций масштабирования произвожу без смены центра, то все в порядке.
Но если на какой-либо итерации меняется центр, то происходят проблемы (по условиям задачи это требуется). В итоге, получается я неправильно создаю матрицу когда центр меняется.
|