为什么 Apple 翻转了 UIBezierPath 的单位圆?
Why did Apple flip their unit circle for UIBezierPath?
左图是典型的单位圆的样子。右边的那个来自文档。我还没有看到更深入的解释为什么它在网上的任何地方被翻转。为什么会这样?
因为 iOS 绘制所有内容 upside-down。
在 OS X 中(几乎所有的数学书,以及来自 OS X 的 Core Graphics 默认情况下),原点在 lower-left 角并且Y-axis 随着你向上移动而增加。在那个坐标系中,角度按照你认为应该的方式排列。在 UIKit 的 upside-down 坐标系中,所有东西都是翻转的。
有趣的是角度的方向让你感到困扰,但奇怪的 Y-axis 却没有。 (*) 程序员之间这种颠倒的直觉很可能是 Apple 在编写 iOS 时翻转坐标系的原因,但您仍然可以在这里和那里看到伪影。 (公平地说,当 Y 向下增加时,模拟页面的布局代码(如文本视图和滚动视图)更容易计算。由于这些是非常常见的设计元素,UIKit 翻转轴并没有那么疯狂。它也去表明这些东西在数学和计算机中是非常随意的。)
(*) 是的,您注意到原点所在的位置,这可能是答案的一部分,但请允许我夸张地说明下一点:D
圆的绘图通常表示为 x = center.x + r * cos(φ) 和 y = center.y + r * sin(φ) 随着 φ 从 0 进展到 2π. 使用标准的笛卡尔坐标系,原点位于 lower-left 角,这将导致绘制一个圆,从 3 点钟开始并逆时针方向进行。请参见下方左图。
但是 iOS 坐标系 y-axis 从标准笛卡尔坐标系翻转过来,原点在 upper-left 角,y
随着你的增加向下移动屏幕。见下右图:
(改编自 Quartz 2D 编程指南中的 Coordinate Systems。 Apple 文档中的原始图表仅说明了坐标系是如何翻转的,但是我更改了箭头以更准确地表示它如何影响从 0 到 π/2 的圆弧的绘制。)
结果是,当使用iOS坐标系时,它会从3点开始,然后顺时针进行。
左图是典型的单位圆的样子。右边的那个来自文档。我还没有看到更深入的解释为什么它在网上的任何地方被翻转。为什么会这样?
因为 iOS 绘制所有内容 upside-down。
在 OS X 中(几乎所有的数学书,以及来自 OS X 的 Core Graphics 默认情况下),原点在 lower-left 角并且Y-axis 随着你向上移动而增加。在那个坐标系中,角度按照你认为应该的方式排列。在 UIKit 的 upside-down 坐标系中,所有东西都是翻转的。
有趣的是角度的方向让你感到困扰,但奇怪的 Y-axis 却没有。 (*) 程序员之间这种颠倒的直觉很可能是 Apple 在编写 iOS 时翻转坐标系的原因,但您仍然可以在这里和那里看到伪影。 (公平地说,当 Y 向下增加时,模拟页面的布局代码(如文本视图和滚动视图)更容易计算。由于这些是非常常见的设计元素,UIKit 翻转轴并没有那么疯狂。它也去表明这些东西在数学和计算机中是非常随意的。)
(*) 是的,您注意到原点所在的位置,这可能是答案的一部分,但请允许我夸张地说明下一点:D
圆的绘图通常表示为 x = center.x + r * cos(φ) 和 y = center.y + r * sin(φ) 随着 φ 从 0 进展到 2π. 使用标准的笛卡尔坐标系,原点位于 lower-left 角,这将导致绘制一个圆,从 3 点钟开始并逆时针方向进行。请参见下方左图。
但是 iOS 坐标系 y-axis 从标准笛卡尔坐标系翻转过来,原点在 upper-left 角,y
随着你的增加向下移动屏幕。见下右图:
(改编自 Quartz 2D 编程指南中的 Coordinate Systems。 Apple 文档中的原始图表仅说明了坐标系是如何翻转的,但是我更改了箭头以更准确地表示它如何影响从 0 到 π/2 的圆弧的绘制。)
结果是,当使用iOS坐标系时,它会从3点开始,然后顺时针进行。