Как я могу переместить повернутый вид относительно системы координат его суперпредставления? - PullRequest
1 голос
/ 02 июня 2009

При изменении центральной точки поворота на 10 градусов указанные координаты для центральной точки не будут соответствовать системе координат суперпредставления.

Например, когда вы хотите подняться прямо вверх на y - 50, а горизонтальное движение отсутствует (т.е. x = theRotatedView.center.x), сдвиг в направлении y будет повернут. Вид будет вверх и вправо, а не только вверх.

Вращение выполняется на виде, а не на слое.

Я мог бы обернуть это в суперпредставление, которое делает движение, в то время как подпредставление делает вращение. Тогда у меня не было проблем с конвертацией. Но, возможно, есть какое-то простое решение. Я просто хочу переместить центр повернутого вида так, как если бы вид не был повернут, то есть, когда нужно уменьшить y на 10, просто сделайте это, не беспокоясь о повернутых координатах. Существуют ли какие-либо методы или функции для преобразования между системами координат, чтобы я мог просто указать координаты центральной точки в координатах суперпредставления, и это будет правильно при применении их к свойству центра повернутого вида?

Ответы [ 2 ]

1 голос
/ 02 июня 2009

Посмотрите на методы CGAffineTransform, такие как CGAffineTransformMake, для более простого способа создания необходимых преобразований. Вы можете комбинировать вращение и перемещение в одной матрице.

0 голосов
/ 02 июня 2009

Вы можете умножить свои координаты на матрицу преобразования. Это помещает ваши координаты в «координатное пространство» вашего родительского представления. Вы также можете использовать обратную матрицу родительского вида, чтобы взять координаты родительского вида и вернуть их в «мировое пространство».

http://en.wikipedia.org/wiki/Rotation_matrix

Прочтите далее страницу с примерами псевдокода.

...