Прочел несколько статей и перелистал учебник, но всё равно не могу разобраться. Есть матрица вида, где элементы $%31,32,33$%, всегда имеют значения указанные в примере. $$\begin{bmatrix} & a & b & tx\\ & c & d &ty\\ & 0 & 0 &1 \end{bmatrix}$$ Для изменения масштаба, задействуются элементы $%a,d$%, где $%a=x,d=y$%, а для вращения $%a=cos,b=-sin,c=sin,d=cos$%. Всё вроде бы просто, но я уверен, что делаю не правильно. Приступив к их постижению, я начал с стандартных для меня манипуляций - задал угол и поставил задачу, вернуть его обратно в ноль, увеличить масштаб, выставить его относительно заданной точки и задать обратно угол. Для приведения значения угла к нулю, я в качестве косинуса и синуса, использую элементы $%a,c$%. Для масштаба $%a,d$%, где задаю им значение 2. Следом изменяю координаты относительно заданной точки изменяя значения $%tx,ty$%, но вот следующий шаг, а именно, возвращения угла, у меня вызывает трудности. Так как, элементам $%a,d$%, выступающим в качестве косинуса, я изменил значение на 2, то первое что пришло мне в голову, это привести число 2 в радианы и затем вычислить синус из имеющегося косинуса и задать в качестве значений, элементам $%b,c$%. Но это наверное не правильно, а вот как правильно, я пока не знаю. Подскажите пожалуйста, где моя ошибка. Для перемещения вправо и в низ - $$\begin{bmatrix} & 0 &1&t_x \\ & 1 &0&t_y \\ & 0 &0&1 \end{bmatrix}$$ Для масштаба, умножение по каждой оси на величину $%sx,sy$% - $$\begin{bmatrix} & s_x &0&0\\ & 0 &s_y&0 \\ & 0 &0&1 \end{bmatrix}$$ Для поворота на угол $%a$% - $$\begin{bmatrix} & cos(a) &-sin(a)&0\\ & sin(a) &cos(a)&0 \\ & 0 &0&1 \end{bmatrix}$$ Для сдвига по осям - $$\begin{bmatrix} & 0 &tan(skew_y)&0\\ & stan(skew_x) &0&0 \\ & 0 &0&1 \end{bmatrix}$$ Вот всё, что есть, другой информации пока не располагаю. Не знаю как Вам, но мне псле прочтения статей, не понятно. Да мне говорит, что синусы и косинусы бывают от -1 до 1, но вот есть как есть. Пробовал перевести в радианы, ноль эффекта. Просто сохранить косинус нельзя, так как не изменяя матрицу, обьект не повернётся. Понимание того, что операции с элементами матрицы, должны быть в каком то порядке, не подталкивает к его осознанию. Я не знаю, какой должен быть порядок. задан 25 Дек '13 16:46 shatal |
Если $%a$%, $%d$% -- это косинусы (кстати, надо указывать угол), то они не могут принимать значение 2. Может, по этой причине и не получается?
Кроме того, если $%x=a$%, $%y=d$%, то не очень понятно, зачем нужны другие буквы для обозначения того же самого.
Я бы подсказал, но не понял в чем именно затруднение с преобразованиями координат. Ведь это достаточно просто для человека, научившегося перемножать матрицы и вычислять определитель.
С этой темой я немного справился.