2017-01-13 2 views
7

enter image description hereWarum hat Apple seinen Einheitskreis für UIBezierPath umgedreht?

Das Bild auf der linken Seite ist, wie ein typischer Einheitskreis aussieht. Die rechte Seite stammt aus der Dokumentation. Ich habe keine ausführlichere Erklärung dafür gefunden, warum sie irgendwo online gestellt wurde. Warum ist das so?

+1

Ich habe mich immer die gleiche Sache gewundert. Ich habe mich gefragt, ob es etwas mit dem verwendeten Koordinatensystem zu tun hat, denn zumindest in "UIKit" wird kein normales kartesisches Koordinatensystem verwendet. – Pierce

+1

Wahrscheinlich, da 0, 0 ist der obere linke Teil des Bildschirms, aber das ist immer noch eine ziemlich unbefriedigende Antwort. Ich bin mir sicher, dass ein kluger Kerl da draußen weiß. – Biclops

+0

@Rob - Für diejenigen von uns, die etwas gute Mathematik lieben, sollten Sie das als eine alternative Erklärung veröffentlichen. Gut gemacht! – Pierce

Antwort

5

eine Zeichnung eines Kreises wird oft durch x = center.x + r * cos (φ)und y = center.y + r * sin (φ) alsφ repräsentiert schreitet fort von bis 2π. Bei einem kartesischen Standardkoordinatensystem mit dem Ursprung in der unteren linken Ecke ergibt sich ein Kreis, der bei 3 Uhr beginnt und gegen den Uhrzeigersinn verläuft. Siehe Diagramm links unten.

Aber das iOS-Koordinatensystem hat die y-Achse aus dem kartesischen Standardkoordinatensystem gekippt, wobei der Ursprung in der oberen linken Ecke und y zunimmt, wenn Sie den Bildschirm nach unten bewegen. Siehe unten rechts Diagramm:

enter image description here

(Diese von Coordinate Systems im Quartz 2D Programming Guide angepasst ist Das ursprüngliche Diagramm in der Apple-Dokumentation nur ist das darstellt, wie die Koordinatensysteme sind gekippt, aber ich habe. änderte den Pfeil, um genauer darzustellen, wie sich dies auf das Zeichnen eines Bogens von 0 bis π/2 auswirkt.)

Das Ergebnis ist, dass das iOS-Koordinatensystem bei 3 Uhr beginnt und dann fortfährt im Uhrzeigersinn.

+0

Sie sagen, dass ein normales Koordinatensystem bei 3 beginnt, sich aber gegen den Uhrzeigersinn dreht, aber das Bild sagt anderes. Was bedeuten die Pfeile im Bild? Ich habe den Abschnitt von Apple's Seite gelesen und es hat nicht gesagt. – Biclops

+0

Ich wollte dieses Bild hinzufügen, war mir aber nicht sicher, ob es sinnvoll war, es in deinen Beitrag aufzunehmen. http://imgur.com/a/Q9uoY – Biclops

+0

@Biclops - Die Pfeile im Beispiel in Apples Dokumentation (was ich in meiner ursprünglichen Antwort eingeschlossen habe) versuchte nicht, die Zeichnung eines bestimmten Bogens darzustellen, sondern war lediglich Veranschaulicht, wie eine Zeichnung im iOS-Koordinatensystem horizontal gedreht wird. Der Pfeil hatte in Apples Beispiel keine Bedeutung, war aber nur eine zufällige Zeichnung. Aber ich kann sehen, wie Apples Diagramm in diesem Zusammenhang verwirrend war, also habe ich es wie in Ihrem Beispiel angepasst, um zu zeigen, dass die Richtung des Zeichnens eines Bogens von 0 bis π/2 in den beiden Koordinatensystemen wiedergegeben wird. Vielen Dank. – Rob

3

Weil iOS alles auf den Kopf stellt.

In OS X (und fast jedem Mathebuch und standardmäßig in Core Graphics, die aus OS X stammen) befindet sich der Ursprung in der unteren linken Ecke und die Y-Achse erhöht sich, wenn Sie nach oben gehen. In diesem Koordinatensystem sind die Winkel so angeordnet, wie Sie denken. Im umgedrehten Koordinatensystem von UIKit ist alles umgedreht.

Interessant ist, dass die Richtung der Winkel Sie störte, aber die bizarre Y-Achse nicht. (*) Diese umgekehrte Intuition unter Programmierern ist wahrscheinlich der Grund dafür, dass Apple beim Schreiben von iOS das Koordinatensystem umgedreht hat, aber Sie können die Artefakte immer noch hier und dort sehen. (Aus Fairness gegenüber Apple ist Layout-Code, der eine Seite nachahmt, wie Textansichten und Bildlaufansichten, viel einfacher zu berechnen, wenn Y nach unten geht. Da dies sehr häufige Designelemente sind, ist es nicht so verrückt, dass UIKit die Achsen dreht zeigt, dass diese Dinge in Mathematik und Computern sehr willkürlich sind.)

(*) Ja, Sie notierten, wo der Ursprung lag, und dass dies ein wahrscheinlicher Teil der Antwort war, aber erlauben Sie mir etwas Übertreibung zu machen der nächste Punkt: D

+2

Danke für diese Antwort. Manchmal arbeite ich mit dem Koordinatenbereich von iOS und fühle mich, als wäre ich in einer verkehrten Welt. Buchstäblich und im übertragenen Sinne ... – Pierce

Verwandte Themen