Apple为什么要为UIBezierPath翻转他们的单位圈?

Bic*_*ops 7 trigonometry core-graphics ios uibezierpath

在此输入图像描述

左侧的图像是典型的单位圆圈的样子.右边的那个来自文档.我还没有看到更深入的解释为什么它在网上被翻转.为什么会这样?

Rob*_*ier 6

因为 iOS 绘制的所有东西都是颠倒的。

在 OS X 中(以及几乎所有数学书籍,默认情况下也包括来自 OS X 的 Core Graphics),原点位于左下角,Y 轴随着向上移动而增加。在该坐标系中,角度按照您认为应有的方式布置。在 UIKit 的颠倒坐标系中,一切都是翻转的。

有趣的是,角度的方向让你感到困扰,但奇怪的 Y 轴却没有。(*) 程序员之间这种倒置的直觉很可能是 Apple 在编写 iOS 时翻转坐标系的原因,但你仍然可以到处看到这些痕迹。(公平地说,当 Y 向下增加时,模仿页面的布局代码(例如文本视图和滚动视图)更容易计算。由于这些是非常常见的设计元素,因此 UIKit 翻转轴并不那么疯狂。它还表明这些东西在数学和计算机中是非常任意的。)

(*) 是的,您注意到原点所在的位置,这可能是答案的一部分,但请允许我用一些夸张的说法来阐述下一点:D

  • 感谢您的回答。有时,在使用 iOS 坐标空间时,我感觉自己身处一个颠倒的世界。从字面上和比喻上来说... (3认同)

Rob*_*Rob 5

φ0进展到2π时,圆的绘图通常由x = center.x + r*cos(φ)y = center.y + r*sin(φ)表示.使用标准的笛卡尔坐标系,原点位于左下角,这将导致绘制一个圆,从3点开始并逆时针前进.请参见下面左侧的图表.

但是,iOS坐标系的y轴从标准笛卡尔坐标系中翻转,原点位于左上角,y随着向下移动而增加.见右图:

在此输入图像描述

(这是改编自坐标系的石英2D编程指南.苹果文档中的原始视图仅仅是说明如何坐标系统被翻转,但我已经改变了箭头以更准确地表示这将如何影响弧的绘制从0到π/ 2.)

结果是,当使用iOS坐标系时,它将从3点钟开始,然后顺时针进行.