9

我注意到我曾经使用过的每个计算机图形系统都使用左手坐标系,其原点位于左上角。Cairo、Java、Microsoft XYZ 和大多数图形程序都使用这个系统。我认为它们都可以追溯到一个共同的祖先,但我找不到任何关于此的参考资料。

如果我不得不猜测,我会说它来自 VGA 图形模式,使用与文本相同的坐标,这自然是基于自上而下、从左到右阅读英语的方式,“第二行”在下方“第一行”......但我正在弥补。

有没有人在讲述这个故事,或者可以指出正确的历史书的方向?

4

4 回答 4

4

这是一个古老的惯例,原因可能有点杜撰。以下是我发现的一些假设:

它源自 CRT 电子束扫描行为。

从上到下扫描意味着您不必等待整个帧首先发送,您只需在开始接收数据后立即开始扫描。(这又提出了一个问题,为什么要从上到下扫描)

它允许 Z 轴进入屏幕而不是从屏幕出来的右手坐标系。

令人讨厌的是,Cocoa 和 Quartz 使用左下角的原点。

于 2012-10-23T20:06:39.860 回答
1

不知道。我不认为有一个确定的答案。很可能当人们仍然拥有基于控制台的机器时,从左上角向下到右下角是有意义的。正如您所说,这就是世界上很多人的阅读方式。把原点放在那里是有道理的。

http://en.wikipedia.org/wiki/Memory-mapped_I/O

维基百科文章有一些关于内存映射显示的信息。例如,我们将一部分内存用于关闭和打开屏幕上的像素。我们让地址 0 成为屏幕的左上角部分,并根据像素是否在内存中,分块移动打开和关闭像素。这基本上就是第一篇文章所说的。

我不知道他们是否让地址 0 成为显示器的左上角,但这是有道理的,它可能刚刚延续。

于 2012-10-23T20:31:43.267 回答
1

我怀疑这是由于遗留原因而保留的旧约定。UpperLeft 的优势在于没有自下而上的语言书写系统。所以在 UpperLeft 更容易:

  • 放置多行文本
  • 处理未知或无限高的页面
  • 如果页面高度发生变化(即更大或更小的设备),在 BottomLeft 中您必须平移每个对象坐标,而在 UpperLeft 中则不需要。

最后一个还扩展到动态放置和布局,其中图形对象的坐标与其父对象有偏移

于 2015-11-15T18:57:04.517 回答
1

我也想知道同样的问题。这是另一个来源:

原点总是在左上角。这源于这样一个事实,即在最初制造时,某种电视会从左到右然后从上到下扫描。所以它不像你在高中几何中看到的那样,原点并不总是在左下角......

Python 交互式编程简介

于 2019-01-05T22:27:45.837 回答