Math 与常规的数学坐标系相比,软件为什么经常使用逆坐标系?

Math 与常规的数学坐标系相比,软件为什么经常使用逆坐标系?,math,coordinate-systems,coords,Math,Coordinate Systems,Coords,您可能知道,在c#中,平面的原点(0,0)是左上角。向右和/或向下移动视为+,向左和/或向上移动视为-。与此相反的是常规数学合作体系: (0,0)=平面中间,向上/向右=+,向下/向左=- 这有点违反直觉,有时可能会很烦人,因为我们(多年来)已经习惯了使用常规的数学坐标,而且你还必须重新计算坐标 这是一个基本的设计缺陷吗?过一会儿你习惯了吗?还有哪些其他语言使用不同的坐标系,如c#?不是c#,而是使用逆坐标系的显示器,这是在很久以前,显示器是用CRT绘制的,图像是从上到下、从左到右绘制的。这就是

您可能知道,在c#中,平面的原点(0,0)是左上角。向右和/或向下移动视为+,向左和/或向上移动视为-。与此相反的是常规数学合作体系:

(0,0)=平面中间,向上/向右=+,向下/向左=-

这有点违反直觉,有时可能会很烦人,因为我们(多年来)已经习惯了使用常规的数学坐标,而且你还必须重新计算坐标

这是一个基本的设计缺陷吗?过一会儿你习惯了吗?还有哪些其他语言使用不同的坐标系,如c#?

不是c#,而是使用逆坐标系的显示器,这是在很久以前,显示器是用CRT绘制的,图像是从上到下、从左到右绘制的。这就是为什么坐标系操作系统的使用与此匹配


像C#这样的语言只是在包装底层操作系统的API,这就是C#也使用它的原因。

数学图形平面是一个虚拟的东西,它向各个方向无限扩展

屏幕是一个真正的东西,根本无法扩展

相反,我们使用了滚动的概念,我们习惯于从一开始就滚动

因此,从概念上讲,图形系统都使用相同的系统作为书中的文本块或页面(从左到右&从上到下)。这是关于我们如何滚动以扩展/推进显示区域


但是它可以用任何其他方式定义;毕竟,例如负坐标与负行号相比确实有意义。

如果您不喜欢屏幕上的坐标系,您可以创建包装器方法,以任意方式重新映射坐标。

几乎一字不差地给出了相同的答案,但您击败了我:)CRT可以同样轻松地从下到上扫描——从上到下的编号系统的原点是文本页面上的行号。@BenVoigt可能,可能不是。我的印象是,这是因为VGA将其数据流定义为自上而下。我认为它甚至可以追溯到CRT之前,即行打印机,基本上是自动打字机。他们按照从左到右再从上到下的阅读顺序打印。CRT继承了他们的坐标系,许多应用程序也继承了坐标系。早期的显示输出(CGA、VGA等)实际上只是“位图”到一些预先指定的内存区域。当以简单2D阵列的形式查看这些区域(以及曝光后)时,左上角原点和升序x/y表示wrt像素/单元索引。所有计算机图形坐标系的左上角为(0,0),除非OpenGL中有一些我不知道的奇怪系统,否则原点在底部left@samgak“你确定它不是在中间吗?”SAMGAK它是(和轴是)我所说的:} Hoalayy为空间变换。@ USER 826740:你可以定义从自定义坐标系到OpenGL坐标(使用视图矩阵)的映射,但是OpenGL坐标不会改变。