CGAffineTransform из двух строк - каждая представлена ​​парой CGPoints - PullRequest
0 голосов
/ 24 июня 2009

Вы, вероятно, можете видеть, куда я иду с этим - но есть ли простой способ генерации CGAffineTransform из двух строк - каждая представлена ​​парой CGPoints:

A[(a1x,a1y), (a2x,a2y)],
B[(b1x,b1y), (b2x,b2y)]

Результирующее преобразование CGAffineTransform при применении к строке A, конечно, приведет к получению строки B. Возможно, это может привести к перемещению, масштабированию и повороту.

Конечно, я надеюсь, что смогу написать это сам после прояснения некоторых триггеров, но мне было интересно, есть ли что-нибудь уже доступное для этого?

Примечание: Я не прошу вас написать это для меня - я просто не хочу пропустить трюк с Core Graphics!

1 Ответ

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

Да, но есть как минимум четыре решения: два перевода и две шкалы (по одному на операцию и направление). Это без учета преобразований, которые оба переводят и масштаб.

«Математика за матрицами» из Руководства по программированию Quartz 2D - хороший обзор того, как работает каждая операция; Исходя из этого, он должен быть достаточно простым, чтобы инвертировать его и создать матрицу для требуемой операции и направления.

Конечно, я надеюсь, что смогу написать это сам после прояснения некоторых триггеров ...

Тебе это не понадобится, кроме вращения.

...