Dlaczego pochodzenie współrzędnych grafiki komputerowej znajduje się w lewym górnym rogu?


37

Z tego, co widziałem, prawie wszystkie rzeczy używają współrzędnych, gdzie (0, 0) znajduje się w lewym górnym rogu, a dodatnia oś Y idzie w dół ekranu.

Dlaczego tak jest? Dlaczego nie konwencjonalna dodatnia oś Y idzie w górę, jak pokazano na wykresach w prostych klasach matematycznych?


7
Twierdziłbym, że rozpoczynanie na szczycie i zwiększanie się wraz ze spadkiem ma większy sens niż konwencja matematyczna, ponieważ ściślej odnosi się do sposobu, w jaki języki indoeuropejskie są czytane i pisane.
Panda Pajama

3
Myślę, że Y + w górę ma sens przy rysowaniu fizycznych obiektów, ponieważ ziemia jest twoim źródłem, a większość twojego świata znajduje się nad ziemią. Jednak w przypadku wyświetlaczy hipotezuję, że ma to związek z naśladowaniem sposobu pisania języków indoeuropejskich.
Panda Piżama


4
Czy znormalizowane współrzędne urządzenia OpenGL nie mają osi Y skierowanej w górę?
Ray

1
Więc zasadniczo pytasz: „Jakie jest pochodzenie pochodzenia?”?
Ken

Odpowiedzi:


43

Jest to spowodowane historią. Wczesne komputery miały lampy katodowe (CRT), które „rysują” obraz za pomocą promienia katodowego od lewego górnego rogu do prawego dolnego rogu.

Aby ułatwić interfejs między pamięcią karty graficznej a CRT, pamięć została odczytana od początku, a obraz został narysowany od lewego górnego rogu (z najniższym adresem pamięci) do prawego dolnego rogu (z najwyższym adresem pamięci).

Rozszerzenie (na podstawie komentarzy)

CRT są oparte na analogowych telewizorach, które były dostępne w tym czasie.

Telewizory tworzą obraz linia po linii najpierw od lewej do prawej, a następnie od góry do dołu . Można przypuszczać, że przyczyną tego jest styl pisania w zachodnich zaprzeczeniach.


7
Jasne, ale dlaczego CRT rysują od lewego górnego rogu (patrząc od widza)? Dlaczego nie w pionie? Dlaczego nie od prawej do lewej? Dlaczego nie od dołu do góry?
Panda Pajama,

1
Można znaleźć tworzenia obrazu CRT tutaj . Zasadniczo dotyczy to telewizji analogowej, ale CRT dla komputera ma tę samą technologię.
Uwe Plonus

12
@PandaPajama komputerowe CRT robią to, ponieważ takie są standardy telewizji analogowej i początkowo w przypadku komputerów domowych często używano telewizorów zamiast specjalistycznych monitorów. Dlaczego pierwsze telewizory przesyłały informacje, dzieląc je na linie skanowania i rysując linie skanowania od lewej do prawej - nie jestem pewien, ale byłoby to zgodne ze sposobem, w jaki piszemy, więc może to być wystarczający powód, aby wybierać między dowolnymi opcjami.
Peteris,

2
@Peteris: Sposób, w jaki piszą Europejczycy
Kaczka Mooing

1
Technicznie, CRT rysuje z etapu od góry po prawej do etapu od dołu po lewej.
ps2goat

3

To świetne pytanie, o którym myślałem wiele razy. Prosta odpowiedź na pytanie „dlaczego” polega na tym, że formaty telewizyjne również rysowały swoje linie od lewej do prawej, a następnie od góry do dołu. Oryginalnymi monitorami komputerowymi były ekrany CRT (małe telewizory), więc format oczywiście pozostał ten sam. Kiedy monitory stały się płaskimi ekranami (a telewizory również stały się płaskimi ekranami), równie naturalne było zachowanie tego samego formatu dla łatwej kompatybilności.

Oczywiście możesz zapytać: dlaczego telewizory rysują w ten sposób? Zostały one wynalezione na początku XX wieku, więc możesz sobie wyobrazić, ile myśli lub jej braku poszło w projekt, jeśli nawet został zakwestionowany. Uwaga: nie ma oznaczać braku szacunku, ponieważ niezwykle trudne jest uzyskanie równań dla promieni odchylających magnetycznie do odpowiednich linii na ekranie, w przeciwieństwie do prostej matrycy małych „żarówek”. (W ten sposób pojawia się pytanie, w jaki sposób na Ziemi wymyślili CRT przed prostą matrycą kropek, na początku XX wieku?)

Niemniej jednak przypuszczam, że prawdopodobnie nigdy nie było kwestionowane (zła rzecz), ponieważ języki zachodnie piszą słowa od lewej do prawej i od góry do dołu. Prawdopodobnie nikt nie pomyślał o możliwości zrobienia tego inaczej.

Osobiście nie lubię tego formatu. Takie podejście zyskałem, programując gry i inne symulacje z orbitami eliptycznymi. Ilekroć spojrzysz na rysowanie równań dotyczących grzechu, cos lub opalenizny, musisz ostrożnie odwracać znaki, które dotyczą parametrów osi y ... inaczej dostaniesz niewłaściwą rzecz.Przykładem mogą być równania parametryczne dla elipsy narysowanej pod dowolnym kątem 2D. To może być prawdziwy koszmar, w którym rozcina się grzech grzech, grzech i podobne rzeczy.

Mówiąc zwięźle w kategoriach matematycznych, ekran znajduje się w kwadrancie 4 zamiast kwadrantu 1. Jest to niepotrzebnie skomplikowane.

BTW, kiedy dojdziesz do 3 wymiarów, uważa się, że oś Z idzie w górę w kierunku dodatnim. Trochę ironiczne. [EDYCJA]: Może nie, zobacz mój komentarz poniżej.

Jeszcze 2 rzeczy, które zdałem sobie sprawę / z którymi się spotkałem:

Zegary słoneczne na półkuli północnej (które mają wskaźniki skierowane na północ i dyski równoległe do ziemi) zawsze obracają się zgodnie z ruchem wskazówek zegara . Jeśli więc umieścimy godzinę zero na górze „tarczy zegara”, wskaźnik cienia zacznie przesuwać się w prawo. Może to być początek kierunku od lewej do prawej w językach zachodnich, rozprzestrzeniającego się do współrzędnych kartezjańskich i ekranów telewizyjnych / komputerowych.

Stare komputery nie rysowały zbyt wiele obiektów graficznych. Narysowali tekst w wierszu polecenia. Naturalne jest więc ustawienie linii 0 na y = 0. Gdybyśmy mieli dolne lewe pochodzenie, matematyka rysowania linii tekstowych byłaby nieco bardziej zaangażowana, i mogłoby to być wielką rzeczą dla tych starych powolnych komputerów (którzy nawet stworzyli skrót do zwiększania o 1, na miłość boską, o nazwie „++”). Ponadto musisz znać rozdzielczość ekranu, a jeśli po prostu wykonasz linię 0 przy y = 0, nie musisz znać rozdzielczości.


2
Wygląda na to, że neandertalczycy zamieszkali na początku XX wieku;)
Wygląda na to, że

1
Aw, właśnie próbowałem podkreślić surowy kontrast w złożoności między CRT i matrycą LED. CRT mają niezwykle złożoną matematykę zaangażowaną w magnetyczne ugięcie promieni światła. Matryca punktowa jest o wiele łatwiejsza do owinięcia głowy: wystarczy wysłać prąd elektryczny do odpowiednich diod LED we właściwym czasie. Jeśli tak, ta ogromna skala większej złożoności sugeruje, że na początku XX wieku zamieszkiwali mniej lub bardziej geniusze, ponieważ musieli robić to bardziej złożone zadanie w znacznie bardziej ograniczonej epoce.
DrZ214,

LED matryce były używane do wyświetlania informacji, nigdy nie stał się popularny na telewizorach i monitorach komputerowych. Nowoczesne płaskie ekrany nie są matrycami LED, ale podświetlanym wyświetlaczem LCD. Diody LED są po prostu używane do podświetlania na niektórych ekranach, ale obraz nie jest tworzony przez diody LED. LCD jest prostą techniką, ale poprawa rozdzielczości ze starego ekranu zegarka do setek lub tysięcy pikseli na ekranie (a następnie niektórych, ponieważ potrzebujesz trzech subpikseli, aby dodać kolor!) Niekoniecznie jest o wiele łatwiejsza niż modulowanie sygnału falowego kontrolowanie wiązki elektromagnetycznej (która jest w sposób porównywalny do transmisji radiowej)
oerkelens

Oś Z w górę nie jest ironiczna - to matematyka. Układ współrzędnych musi być praworęczny, więc jeśli + X znajduje się po prawej stronie i + Y znajduje się na ekranie, to daje + Z w górę. Podobnie jak jeśli zatrzymamy + X w prawo, + Y w dół, + Z pojawi się na ekranie.
tpg2114

1
@ tgp2114 Dlaczego układ współrzędnych musi być praworęczny?
Taemyr

3

Dodatek: Wczesne grafiki zostały wykonane na monitorach wektorowych , tylko jeden krok w górę od oscyloskopów widocznych w laboratorium, gdzie (0,0) znajdowałby się dokładnie na środku ekranu, z zastrzeżeniem pewnego obrotu pokrętła, aby ustawić skalę X / Y, X Przesunięcie / Y i ewentualnie odwrócenie X / Y.

Dedykowany sprzęt „Asteroidów” Atari (1979) wykorzystał ekran wektorowy; interesująco byłoby wiedzieć, co według niego jest jego układem współrzędnych programu.

„Sketchpad” Ivana SutherlandaSystem (1963) oparty był na wyświetlaczu wektorowym TX-2 , aw „Sketchpad: Graficzny system komunikacji człowiek-maszyna” (praca doktorska, styczeń 1963), pisze na stronie 70 i następnych:

Układ współrzędnych systemu wyświetlania TX-2 ma początek w środku zakresu i wymaga dziesięciu bitów informacji o odchyleniu znajdujących się po lewej stronie 18-bitowych pod słowami komputerowymi dla każdej osi.

...

Dla wygody w reprezentowaniu wielu zmiennych składowych i dla ponad 18-bitowej precyzji Sketchpad używa wewnętrznego układu współrzędnych do reprezentacji rysunku oddzielonej od reprezentacji wymaganej przez system wyświetlania. Ten wewnętrzny układ nazywany jest układem współrzędnych „strony”. Myśląc o rysunkach w Sketchpad, współrzędne strony są uważane za stałe. Transformacja strona do zakresu daje możliwość wyświetlenia w zakresie dowolnej części strony, w dowolnym stopniu powiększenia, tak jakby przez szkło powiększające (...) Współczynnik skali wyświetlacza kontroluje rozmiar kwadratu, który pojawi się na lunecie. Faktycznie zapisana liczba to połowa długości boku kwadratu, zwanego SCSZ dla SCope SiZe), jak pokazano na rysunku 5.2. Zapisywane są również współrzędne strony środka kwadratu zakresu. Zmieniając te liczby, część strony pokazanej na lunecie można zmienić pod względem wielkości i przesunąć, ale nie obrócić.

Diagram 5.2 na stronie 73 pokazuje, że „układ współrzędnych strony” wykorzystuje konwencję matematyczną kartezjańskiego układu współrzędnych X / Y. (Można by zapytać, dlaczego ta konwencja jest taka, jaka jest ...)


ale: ekrany wektorowe były używane tylko dlatego, że pamięć była zbyt rzadka, aby reprezentować cały możliwy do wyświetlenia obraz, a listy wektorowe + czas prezentacji + połączenia wymagają znacznie mniej pamięci (jak wielokąty vs. woksele)
Micka

2

Nie wszystko jest w lewym górnym rogu.

Na przykład OpenGL określa, że ​​początek jest u dołu po lewej stronie, i jest to wszechobecne w całym interfejsie API: współrzędne tekstury, rzutnie, prostokąty texel, standardowa projekcja orto: jest do końca po lewej stronie u dołu.

Tutaj jest różnica w myśleniu.

Na ekranach komputerów, podobnie jak w książkach, kiedy ludzie czytają (i zakładam, że jest to język angielski), czytają od lewej do prawej i od góry do dołu. Zrobiłeś to sam, kiedy napisałeś to pytanie i robisz to, czytając odpowiedzi na to pytanie.

W matematyce i projektowaniu, gdy rysujesz wykres, masz oś X i Y z dodatnim X skierowanym w lewo i dodatnim Y skierowanym w górę.

Jeśli budujesz coś w stylu graficznego interfejsu użytkownika 2D w grze, może być łatwiejsze i bardziej intuicyjne dla wielu osób, aby rozłożyć go w sposób „początkowy lewy górny”.

Jeśli budujesz coś, co ma naśladować projekt lub układ na papierze milimetrowym, wiele osób może łatwiej i bardziej intuicyjnie rozłożyć je w sposób „początkowy lewy dolny”.

W rzeczywistości oba są dość nieformalnymi konwencjami, a jeśli tworzysz projekcję orto, możesz faktycznie wybrać swoje pochodzenie w dowolnym dowolnym punkcie na (lub poza) ekranem, z dodatnim X skierowanym w lewo lub w prawo i dodatnim Y idzie w górę lub w dół. To tylko kwestia odpowiedniego dostosowania matrycy projekcyjnej.

Dlatego jedyną ważną rzeczą jest wybór konwencji, z której zamierzasz korzystać i konsekwentnie z niej korzystać.


Świetna odpowiedź. Tworzę algorytm z mnóstwem trygonometrii, który ostatecznie doprowadzi do rysowania rzeczy na ekranie, i naprawdę nie byłem pewien, czy łamałem jakieś tabu lub konwencję, podnosząc dodatnią oś Y.
Alexander Høst

-1

Ponieważ ekrany zaczynają renderować obraz od lewego górnego rogu. Łatwiej byłoby powiązać renderowanie lub rysowanie osi współrzędnych, gdy (0,0,0) znajduje się w lewym górnym rogu, a oś Y wchodzi w ekran.


-2

Argument ZA: (przez przykład)

var R uint32 = 0xFF0000FF; //:Red pixel
var W uint32 = 0xFFFFFFFF; //:White Pixel.
var Pixels []uint32 = { 
W,W,W,R,R,W,W,W,
W,W,R,R,R,R,W,W,
W,R,R,R,R,R,R,R,
W,W,W,R,R,W,W,W,   //:8x8 pixel image of " ↑ "
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W, }

Kod dopasowuje wyniki na ekranie :

wprowadź opis zdjęcia tutaj

Czerwona strzałka byłaby do góry nogami jeśli NIE użyjesz lewego górnego źródła.

Nie mogę powiedzieć, czy to jest „dlaczego”. Właśnie dlatego jest to dobry powód pochodzenia w lewym górnym rogu.


2
„Czerwona strzałka byłaby do góry nogami, gdyby NIE używałeś lewego górnego źródła” Tak, więc? Czy twórcy gier przez większość czasu piszą grafiki za pomocą tablic 2D w kodzie?
Vaillancourt

Nie mogę mówić za wszystkich twórców gier. Robię: newgrounds.com/portal/view/706067 Adam Atomic również, czytając kod źródłowy flixel. Biblioteki OpenGL i SFML na pewno tak. OpenCL pozwala ci wyodrębnić punkty danych na X / Y, (get_global_id (dim)), ale początkowy przydział pamięci to 1D.
J MADISON,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.