为什么PyGame坐标系原点在左上角?
Why PyGame coordinate system has its origin at the top-left corner?
我已经使用 PyGame 一段时间了,我不得不进行坐标变换,将数学中使用的正常坐标系(原点在左下角)更改为 PyGame坐标系(原点在左上角)。我发现 this post 对此非常有用。
但是我想知道,为什么PyGame使用这个奇怪的坐标系?
这不仅仅是 PyGame - 它是图形显示的旧约定。许多 API 允许您覆盖和选择您自己的约定,但即便如此,它们也会在后台映射回左上角约定。
对于旧的 CRT 显示器,很容易看出该约定的起源。每一帧的光栅扫描自上而下进行,每一行从左到右扫描。由于扫描是以这种方式完成的,所以信号也是以这种方式发送的,内存中的像素缓冲区也是以这种方式组织的,以允许硬件为每一帧实现相对简单和高效的内存线性扫描。
对于 LCD 和其他较新的显示技术,我很确定这种约定只是出于历史原因 - 关于光栅应如何扫描图片以获取电视信号和 CRT 的大概任意决定的遗留问题几十年前。
我已经使用 PyGame 一段时间了,我不得不进行坐标变换,将数学中使用的正常坐标系(原点在左下角)更改为 PyGame坐标系(原点在左上角)。我发现 this post 对此非常有用。
但是我想知道,为什么PyGame使用这个奇怪的坐标系?
这不仅仅是 PyGame - 它是图形显示的旧约定。许多 API 允许您覆盖和选择您自己的约定,但即便如此,它们也会在后台映射回左上角约定。
对于旧的 CRT 显示器,很容易看出该约定的起源。每一帧的光栅扫描自上而下进行,每一行从左到右扫描。由于扫描是以这种方式完成的,所以信号也是以这种方式发送的,内存中的像素缓冲区也是以这种方式组织的,以允许硬件为每一帧实现相对简单和高效的内存线性扫描。
对于 LCD 和其他较新的显示技术,我很确定这种约定只是出于历史原因 - 关于光栅应如何扫描图片以获取电视信号和 CRT 的大概任意决定的遗留问题几十年前。