2009-05-19 8 views
5

Istnieje funkcja jak:Gdzie jest różnica między "transformacją" a "transformacją afiniczną"?

CATransform3DGetAffineTransform

Zwraca affine przekształcić reprezentowany przez 't'. Jeśli "t" nie może być dokładnie reprezentowana jako afiniczna transformata, to nieokreślona jest .

Nie jestem tak zorientowany na matematykę, więc łatwy do zrozumienia opis będzie bardzo miły. Wikipedia nie była tu wielką pomocą.

+0

Jest to podobne do tego pytania: http://stackoverflow.com/questions/567829/catransform3d-vs-cgaffinetransform –

Odpowiedz

0

CoreAnimation używa transformacji 3D. Transformacje afiniczne są podzbiorem 2D tych transformacji 3D. Umożliwiają tylko tłumaczenie, obrót i skalowanie w planie X, Y.

+2

To nie jest prawda - transformacje afiniczne są transformacjami, które zachowują kolinearność i stosunek odległości. Tłumaczenie, obracanie, skalowanie i inne są również trójwymiarowe. –

+0

Powinienem był sprecyzować, że zakres mojej odpowiedzi to Cocoa i NSAffineTransform. – mouviciel

6

afiniczne transformacje są transformacje, które nie „nadmiernie zakłócać” swoją geometrię w tym sensie, że:

  • punkty, które leżały na linii przed wciąż leżą na linii po transformacji
  • względne odległości pomiędzy punkty pozostają takie same (tak kwadratowy może nie być już kwadratowy, ale wciąż ma równych długości boków)

więc rotacja i skalowanie są afiniczne - projekcja, na przykład, nie jest.

1

Transformacje afiniczne są transformacjami, ale transformacje nie muszą być afiniczne. Na przykład ścinanie płaszczyzny nie jest afiniczne, ponieważ nie przesyła linii do linii.

Transformacje afiniczne to z definicji przekształcenia, które zachowują proporcje odległości i przesyłają linie do linii (zachowując "współliniowy"). W skończonej wymiarowej geometrii euklidesowej działają one przez liniową transformację, a następnie translację, tj. x -> Ax + b, gdzie x jest wektorem, A jest transformacją liniową, a b jest wektorem.

Transformacje afiniczne świetnie nadają się do zmiany układów współrzędnych, być może z dość trudnych do wizualizacji z powrotem do zwykłych współrzędnych.

Transformacje afiniczne, które można napotkać w praktyce, to tłumaczenia, rozszerzanie (skalowanie), rotacja i odbicie. Jeśli tworzysz na iOS, powiedz, sprawdź sekcje dokumentacji dewelopera CGAffineTransform. Wyjaśnią one, w jaki sposób utworzyć transformacje typu Affine za pomocą kilku metod wygody i jak zastosować je w instancjach UIView z komunikatem -setTransform.

Wreszcie ważnym punktem o przekształceniach afinicznych jest to, że oni nie są przemienne pod składzie: Zastosowanie transformaty T1 następnie przekształcić T2 jest na ogół różni się od stosowania T2 następnie T1. To jest kolejność, w jakiej stosuje się te kwestie.