Где разница между «преобразование» и «аффинного преобразования»?

голоса
5

Существует функция, как:

CATransform3DGetAffineTransform

Возвращает аффинное преобразование, представленное «т». Если «т» не может быть точно представлено как аффинное преобразование возвращаемое значение не определено.

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

Задан 19/05/2009 в 13:56
источник пользователем
На других языках...                            


3 ответов

голоса
0

CoreAnimation использует 3D-преобразования. Аффинные преобразования являются 2D подмножество этих 3D-преобразований. Они допускают только перемещение, вращение и масштабирование в X, Y план.

Ответил 19/05/2009 в 13:59
источник пользователем

голоса
6

Аффинные преобразования являются преобразованиями, которые не «чрезмерно искажают» геометрию в том смысле, что:

  • точки, которые лежат на линии, прежде чем до сих пор лежат на одной линии после преобразования
  • относительные расстояния между точками остаются прежними (так квадрат не может быть квадратным больше, но по-прежнему имеют равные боковые длины)

Таким образом, поворот и масштабирование аффинны - проекция, например, не является.

Ответил 19/05/2009 в 16:23
источник пользователем

голоса
1

Аффинные преобразования преобразования, но преобразования не должны быть аффинных. Например, сдвиг плоскости не аффинный, потому что он не посылает линии к линиям.

Аффинные преобразования по определению тех преобразования , которые сохраняют соотношение расстояний и отправлять линии к линии ( с сохранением «колинеарности»). В конечномерном евклидовой геометрии, они действуют путем линейного преобразования с последующим перемещением , т.е. , x -> Ax + bгде xпредставляет собой вектор, Aявляется линейным преобразованием , и bявляется вектором.

Аффинные преобразования велики для изменения координатных систем, возможно, от той, которая является довольно трудно представить себе обратно в обычных координат.

Аффинное преобразование вы , вероятно, столкнутся на практике, переводы, расширение (т.е. масштабирование), вращение и отражение. Если вы разрабатываете для прошивки, скажем, проверить CGAffineTransformразделы документации для разработчиков. Это объясняется , как создать аффинные преобразования , используя несколько удобных методов, и как применять их в случаи UIView с -setTransformсообщением.

Наконец, важный момент , о преобразованиях аффинных в том , что они не коммутативных под составом: Применяя преобразование с T1последующим преобразованием T2в общем случае отличается от наклеивания T2следует T1. То есть, порядок , в котором вы применяете эти вопросы.

Ответил 03/05/2011 в 07:18
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more