2015-07-19 12 views
5

Как вы, вероятно, знаете, в C# начало координат (0,0) плоскости является верхним углом. Переход вправо и/или под считается +, а влево и/или вверх -. Противоположным этому является регулярная математическая система координирования:Почему программное обеспечение часто использует обратную систему координат по сравнению с обычной системой координат?

(0,0) = середина плоскости, вверх/вправо = +, вниз/влево = -.

Это своего рода контр-интуитивно понятное и иногда может быть раздражающим, так как мы используем (в течение многих лет) использование обычных математических кодов, и вам также нужно пересчитать координаты.

Является ли это фундаментальным недостатком дизайна? И привыкаешь ли ты к нему через некоторое время? И какие другие языки используют другую систему координат, такую ​​как C#?

+0

вся система координат компьютерной графики имеет верхний левый угол как (0, 0), если нет каких-то странных систем, которые я не знаю –

+0

В OpenGL источник находится в левом нижнем углу – samgak

+0

@samgak: Вы уверены, что это не в середине? –

ответ

8

Это не C#, а дисплей, который использует обратную систему координат, это происходит из дней назад, когда дисплей был нарисован с использованием ЭЛТ, и изображение было нарисовано сверху вниз, слева направо. Вот почему использование системы координат системы соответствует этому.

Языки, подобные C#, просто обертывают базовый API OS, и именно поэтому C# использует его.

+0

Получил тот же ответ почти слово в слово, но вы избили меня до него :) – DavidG

+0

ЭЛТ могли бы сместиться снизу вверх так же легко - происхождение системы нумерации сверху вниз - это номера строк на странице текста. –

+0

@BenVoigt Может быть, может и нет. Я был под впечатлением, потому что VGA определил поток данных как сверху вниз. –

1

Математическая плоскость графика - это виртуальная вещь, которая расширяется во всех направлениях без ограничений.

Экран действительный вещь, которая вообще не может расширяться.

Вместо этого мы используем понятие прокрутки и мы используются для делать это от начальной точки вниз.

Таким образом, концептуально графические системы используют ту же систему, что и текстовый блок (слева направо) в одной книге. Речь идет о том, как мы прокручиваем расширение/продвижение области отображения.

Но это может быть определено любым другим способом; в конце концов, например. отрицательные координаты имеют смысл, а не отрицательный номер строки.

0

Если вам не нравится система координат на экране, вы можете создать методы-обертки, чтобы перегруппировать координаты любым удобным вам способом.