2017-01-13 34 views
7

enter image description hereDlaczego Apple odwrócił swoje kółko jednostek dla UIBezierPath?

Obrazek po lewej pokazuje jak wygląda typowy krąg jednostkowy. Ten po prawej pochodzi z dokumentacji. Nie widziałem bardziej dogłębnego wyjaśnienia, dlaczego został przeniesiony w dowolne miejsce w Internecie. Dlaczego tak jest?

+1

Zawsze zastanawiałem się nad tym samym. Zastanawiałem się, czy ma to coś wspólnego z używanym układem współrzędnych, ponieważ przynajmniej w 'UIKit' nie używa się regularnego układu współrzędnych kartezjańskich. – Pierce

+1

Prawdopodobnie od 0, 0 jest lewą górną częścią ekranu, ale nadal jest to niezadowalająca odpowiedź. Jestem pewna, że ​​jakiś inteligentny facet wie. – Biclops

+0

@Rob - Dla tych z nas, którzy kochają trochę dobrej matematyki, powinieneś opublikować to jako alternatywne wyjaśnienie. Dobra robota! – Pierce

Odpowiedz

5

rysunek koła jest często reprezentowany przez x = center.x + r * cos (φ) i center.y + y = r * sin (φ) jak cp postępuje od do 2π. W standardowym układzie współrzędnych kartezjańskich, z punktem początkowym w lewym dolnym rogu, powoduje to utworzenie okręgu, rozpoczynając od godziny 3 i kontynuując w kierunku przeciwnym do ruchu wskazówek zegara. Zobacz schemat po lewej stronie, poniżej.

Ale układ współrzędnych iOS ma oś Y odwróconą ze standardowego kartezjańskiego układu współrzędnych, z początkiem w lewym górnym rogu i y rosnącym w miarę przesuwania ekranu w dół. Zobacz prawy wykres poniżej:

enter image description here

(ten jest adaptacją Coordinate Systems w Programowanie Quartz 2D Przewodnik Oryginalny schemat w dokumentacji Apple jest jedynie ilustrujący, jak układy współrzędnych są odwrócone, ale mam. zmienił strzałkę, aby dokładniej odwzorować, jak wpływa to na rysowanie łuku od 0 do π/2).

Powoduje to, że podczas korzystania z układu współrzędnych iOS rozpocznie się o godzinie 3, ale następnie kontynuuje zgodnie z ruchem wskazówek zegara.

+0

Mówisz, że normalny układ współrzędnych zaczyna się od 3, ale obraca się w kierunku przeciwnym do ruchu wskazówek zegara, ale obraz mówi inaczej. Co oznaczają strzałki na obrazie. Przeczytałem sekcję ze strony Apple i nie powiedziałem. – Biclops

+0

Chciałam dodać ten obraz, ale nie byłam pewna, czy ma sens wstawienie go do postu. http://imgur.com/a/Q9uoY – Biclops

+0

@Biclops - Strzałki w przykładzie w dokumentacji Apple (co jest zawarte w mojej oryginalnej odpowiedzi) nie starał się reprezentować rysunek konkretnego łuku, ale był tylko ilustrujące, jak dowolny rysunek jest odwracany poziomo w układzie współrzędnych iOS. Strzała nie miała żadnego znaczenia w przykładzie Apple, ale była tylko losowym rysunkiem. Ale widzę, jak schemat Apple był mylący w tym kontekście, więc dostosowałem go tak, jak w twoim przykładzie, aby pokazać, że kierunek rysowania łuku od 0 do π/2 byłby renderowany w dwóch układach współrzędnych. Dzięki. – Rob

3

Ponieważ iOS rysuje wszystko do góry nogami.

W OS X (i prawie we wszystkich książkach matematycznych, a także domyślnie w Core Graphics, które pochodziły z OS X), pochodzenie jest w lewym dolnym rogu, a oś Y zwiększa się wraz ze wzrostem. W tym układzie współrzędnych kąty układają się tak, jak powinno. W odwróconym układzie współrzędnych UIKit wszystko jest odwrócone.

Co ciekawe, niepokoił cię kierunek kątów, ale dziwna oś Y nie. (*) Ta odwrócona intuicja wśród programistów jest prawdopodobnie powodem, dla którego Apple odwróciło układ współrzędnych podczas pisania iOS, ale nadal można zobaczyć artefakty tu i tam. (W uczciwości wobec Apple kod układu, który naśladuje stronę, podobnie jak widoki tekstu i przewijane widoki, jest znacznie łatwiejszy do obliczenia, gdy Y rośnie w dół, ponieważ są to bardzo typowe elementy projektu, nie jest tak szalone, że UIKit odwraca osie. udowadnia, że ​​te rzeczy są bardzo arbitralne w matematyce i komputerach.)

(*) Tak, zauważyłeś, gdzie pochodzenie się znajdowało, i że była to prawdopodobnie część odpowiedzi, ale pozwól mi wprowadzić hiperbolę kolejny punkt D

+2

Dzięki za tę odpowiedź. Czasami pracując z przestrzenią współrzędnych iOS, czuję, że jestem w odwróconym świecie. Dosłownie iw przenośni ... – Pierce