Pourquoi l'origine en coordonnées informatiques est-elle en haut à gauche?


37

D'après ce que j'ai vu, presque tout utilise les coordonnées où (0, 0) est en haut à gauche et l'axe Y positif va dans la direction descendante de votre écran.

Pourquoi est-ce comme ça? Pourquoi pas l'axe Y positif conventionnel qui monte comme le montrent les graphiques des classes de mathématiques simples?


7
Je dirais que commencer par le haut et augmenter au fur et à mesure ont plus de sens que la convention mathématique, dans la mesure où cela se rapporte plus étroitement à la manière dont les langues indo-européennes sont lues et écrites.
Panda Pyjama

3
Je pense que le Y + up est logique lorsque vous dessinez des objets physiques, car le sol est votre origine et la plus grande partie de votre monde est au dessus du sol. Cependant, pour les affichages, je suppose que cela est lié à imiter la manière dont les langues indo-européennes sont écrites.
Panda Pyjama


4
Les coordonnées de périphérique normalisées d'OpenGL n'ont-elles pas un axe Y ascendant?
Ray

1
Donc, vous demandez essentiellement "quelle est l'origine de l'origine?"
Ken

Réponses:


43

Ceci est causé dans l'histoire. Les premiers ordinateurs avaient des tubes cathodiques (TRC) qui "dessinaient" l’image avec un rayon cathodique du coin supérieur gauche au coin inférieur droit.

Pour faciliter l'interface entre la mémoire de la carte graphique et l'écran cathodique, la mémoire a été lue depuis le début et l'image a été dessinée en haut à gauche (avec l'adresse de mémoire la plus basse) vers le bas à droite (avec l'adresse de mémoire la plus élevée).

Extension (basée sur les commentaires)

Les écrans cathodiques sont basés sur les téléviseurs analogiques disponibles à ce moment.

Les téléviseurs créent l'image ligne par ligne, de gauche à droite, puis de haut en bas . On peut supposer que la raison en est uniquement basée sur le style d’écriture des pays occidentaux.


7
Bien sûr, mais pourquoi les écrans cathodiques tirent-ils en haut à gauche (vu du spectateur)? Pourquoi pas verticalement? Pourquoi pas de droite à gauche? Pourquoi pas de bas en haut?
Panda Pyjama

1
Vous pouvez trouver la création d'image d'un tube cathodique ici . Fondamentalement, il s’agit de la télévision analogique, mais un tube cathodique pour ordinateur a la même technologie.
Uwe Plonus

12
Les tubes cathodiques d'ordinateurs de @PandaPajama le font parce que ce sont les normes de la télévision analogique. De plus, pour les ordinateurs personnels, les téléviseurs étaient souvent utilisés à la place d'écrans spécialisés. Pourquoi les premiers téléviseurs ont-ils transmis des informations en les divisant en lignes de balayage et en dessinant les lignes de balayage de gauche à droite - je ne suis pas sûr, mais cela serait cohérent avec la façon dont nous écrivons. Ce pourrait donc être une raison suffisante pour choisir entre des options arbitraires.
Peteris

2
@Peteris: la manière dont les Européens écrivent
Mooing Duck

1
Techniquement, le tube cathodique dessine de la scène en haut à droite à la scène en bas à gauche.
ps2goat

3

C'est une excellente question à laquelle j'ai souvent pensé. La réponse simple à "pourquoi" est que les formats de télévision ont également tracé leurs lignes de gauche à droite puis de haut en bas. Les moniteurs d’ordinateur originaux étaient des écrans à tube cathodique (petits téléviseurs), de sorte que le format est resté naturellement le même. Lorsque les moniteurs sont devenus des écrans plats (et les téléviseurs sont également devenus des écrans plats), il était tout aussi naturel de conserver le même format pour faciliter la compatibilité.

Bien sûr, vous pouvez alors demander: pourquoi les téléviseurs dessinent-ils de cette façon? Ils ont été inventés au début du 20ème siècle, vous pouvez donc imaginer à quel point la conception a été pensée ou non. Remarque: ce n’est pas irrespectueux car c’est incroyablement plus difficile d’obtenir des équations de déviation magnétique des rayons vers les lignes appropriées d’un écran, par opposition à une simple matrice de minuscules "ampoules". (Cela pose un peu la question de savoir comment sur Terre ont-ils inventé les tubes cathodiques avant la simple matrice de points, il y a bien longtemps, au début du 20ème siècle?)

Néanmoins, je suppose que cela n’a probablement jamais été remis en question (ce qui est une mauvaise chose), car les langues occidentales écrivent des mots de gauche à droite et de haut en bas. Probablement personne n'a envisagé la possibilité de le faire différemment.

Personnellement, je n'aime pas ce format. J'ai acquis cette attitude en programmant des jeux et d'autres simulations impliquant des orbites elliptiques. Chaque fois que vous recherchez des équations dessinées impliquant péché, cos ou bronzage, vous devez soigneusement inverser les signes qui traitent des paramètres de l'axe des ordonnées ... sinon, vous obtiendrez une erreur. Un exemple serait les équations paramétriques pour une ellipse dessinée sous n'importe quel angle 2D. Ce peut être un vrai cauchemar disséquer le péché, péché, péché , et des choses similaires.

En termes mathématiques, l’écran est dans le quadrant 4 au lieu du quadrant 1. C’est inutilement compliqué.

BTW quand vous arrivez à 3 dimensions, on considère que l’axe z va "vers le haut" dans le sens positif. Un peu ironique. [EDIT]: Peut-être pas, voir mon commentaire ci-dessous.

2 autres choses que j'ai réalisées / rencontrées:

Les cadrans solaires dans l'hémisphère nord (qui ont des pointeurs orientés vers le nord et des disques parallèles au sol) tournent toujours dans le sens des aiguilles d'une montre . Donc, si nous plaçons l'heure zéro en haut du "cadran", le pointeur de l'ombre commence à se déplacer vers la droite. Cela pourrait être à l'origine de la direction de gauche à droite dans les langues occidentales, se propageant jusqu'aux coordonnées cartésiennes et aux écrans de télévision / ordinateur.

Les vieux ordinateurs ne dessinaient pas beaucoup d'objets graphiques. Ils ont dessiné le texte dans une invite de commande. Il est donc naturel de mettre la ligne 0 à y = 0. Si nous avions une origine en bas à gauche, le calcul des lignes de texte serait un peu plus compliqué, et cela aurait pu être un gros problème pour ces vieux ordinateurs lents (qui ont même créé un raccourci pour incrémenter de 1, pour l'amour du bien, appelé "++"). De plus, vous devez connaître la résolution de l'écran, alors que si vous ne faites que la ligne 0 à y = 0, vous n'avez pas besoin de connaître la résolution.


2
On dirait que le début du 20ème siècle a été peuplé par les Néandertaliens;)
bummzack

1
Aw, j'essayais juste de souligner le contraste frappant de la complexité entre les tubes cathodiques et une matrice de DEL. Les tubes cathodiques ont des calculs incroyablement complexes impliqués dans la déviation magnétique des rayons de lumière. Une matrice de points est plus facile à comprendre: il suffit d'envoyer du courant électrique aux bonnes DEL au bon moment. Au contraire, cette immense ampleur d'une complexité plus grande suggère que le début du 20ème siècle était peuplé de génies plus ou mieux, car ils devaient faire cette chose plus complexe à une époque beaucoup plus limitée.
DrZ214

Les matrices à LED étaient utilisées pour afficher des informations; elles ne sont jamais devenues populaires pour les téléviseurs et les écrans d'ordinateur. Les écrans plats modernes ne sont pas des matrices à LED, mais des LCD rétro-éclairés. Les LED ne sont utilisées que pour le rétroéclairage de certains écrans, mais l’image n’est pas créée par des LED. L’écran LCD est une technique simple, mais il n’est pas forcément beaucoup plus simple d’améliorer la résolution de l’ancien affichage de la montre à des centaines, voire des milliers de pixels sur l’écran (et même plus, car il faut trois sous-pixels pour ajouter de la couleur!). contrôler un faisceau EM (ce qui est comparable à la radiodiffusion)
oerkelens

L'axe Z en haut n'est pas ironique - c'est des maths. Le système de coordonnées doit être droitier, donc si + X est à droite et que + Y est à l'écran, + Z est affiché. Tout comme si on maintenait + X à droite, + Y bas, + Z était dans l'écran.
tpg2114

1
@ tgp2114 Pourquoi le système de coordonnées doit-il être droitier?
Taemyr le

3

Addendum: Les premiers graphiques ont été réalisés sur des moniteurs vectoriels , à un cran supérieur aux oscilloscopes vus dans le laboratoire où (0,0) se trouverait exactement au milieu de l'écran, à condition que certains boutons tournent pour définir l'échelle X / Y, X Décalage / Y et éventuellement inversion X / Y.

Le matériel dédié d'Atari "Asteroids" (1979) utilisait par exemple un écran vectoriel; il serait intéressant de savoir ce qu’il pensait de son système de coordonnées de programme.

Le système "Sketchpad" d' Ivan Sutherland (1963) était basé sur un affichage vectoriel TX-2 et dans "Sketchpad: un système de communication graphique homme-machine" (thèse de doctorat, janvier 1963), il écrit à la page 70ff:

Le système de coordonnées du système d’affichage TX-2 a son origine au centre de la portée et nécessite dix bits d’informations de déviation situés à gauche de sous-mots de 18 bits de l’ordinateur pour chaque axe.

...

Pour faciliter la représentation de nombreuses variables de composant et pour une précision supérieure à 18 bits, Sketchpad utilise un système de coordonnées interne pour dessiner une représentation séparée de la représentation requise par le système d’affichage. Ce système interne s'appelle le système de coordonnées "page". En pensant aux dessins dans Sketchpad, les coordonnées de la page sont considérées comme fixes. Une transformation de page en étendue permet de visualiser sur l’étendue toute partie de la page souhaitée, à n’importe quel degré de grossissement, comme si elle était affichée à la loupe (...). Un facteur d’échelle pour l’affichage contrôle la taille du carré qui apparaîtra sur la portée. Le nombre réel enregistré est la demi-longueur du côté du carré, appelée SCSZ pour SCope SiZe), comme illustré à la figure 5.2. Les coordonnées de la page du centre du carré de la portée sont également enregistrées. En modifiant ces numéros, la taille de la partie de la page affichée sur l'oscilloscope peut être modifiée et déplacée, mais non pivotée.

Le diagramme 5.2 à la page 75 montre que le "système de coordonnées de page" utilise la convention mathématique du système de coordonnées cartésiennes X / Y. (On pourrait se demander pourquoi cette convention est comme ça ...)


mais: les écrans vectoriels n'ont été utilisés que parce que la mémoire était trop rare pour représenter une image affichable entière et des listes vectorielles + durée de présentation + les connexions ont besoin de beaucoup moins de mémoire (comme les polygones contre les voxels)
Micka

2

Tout n'est pas en haut à gauche.

OpenGL, par exemple, spécifie que l'origine est en bas à gauche, ce qui est omniprésent dans l'API: coordonnées de texture, fenêtres, rectangles de texel, la projection ortho standard: tout en bas, à gauche.

Il y a une différence de pensée ici.

Sur les écrans d’ordinateur, comme pour les livres, quand les gens lisent (et je suppose une langue comme l’anglais ici), ils lisent de gauche à droite et de haut en bas. Vous l'avez fait vous-même lorsque vous avez écrit cette question et vous le faites lorsque vous lisez les réponses.

En mathématiques et en conception, lorsque vous tracez un graphique, vous avez un axe X et un axe Y, le X positif étant à gauche et le Y positif à la hausse.

Si vous construisez quelque chose comme une interface graphique 2D dans un jeu, il peut être plus facile et plus intuitif pour de nombreuses personnes de l'exposer de manière "en haut à gauche, c'est l'origine".

Si vous construisez quelque chose qui imite un dessin ou une mise en page sur du papier millimétré, il peut être plus facile et plus intuitif pour de nombreuses personnes de l'exposer de manière "en bas à gauche, c'est l'origine".

En fait, il s’agit de conventions assez informelles. Si vous configurez une projection ortho, vous pouvez choisir d’avoir votre origine à n’importe quel point de l'écran (ou hors) de manière arbitraire, avec un X positif allant de gauche à droite. Y monter ou descendre. Il suffit d’ajuster votre matrice de projection en conséquence.

La seule chose importante est donc de choisir quelle convention vous allez utiliser et de l’utiliser de manière cohérente.


Très bonne réponse. Je crée un algorithme avec des tonnes de trigonométrie qui mènera finalement à des choses dessinées à l'écran, et je ne savais vraiment pas si j'étais en train de briser un tabou ou une convention en faisant en sorte que l'axe des y soit positif.
Alexander Høst le

-1

Parce que les écrans commencent à rendre l'image à partir du coin supérieur gauche. Il serait plus facile de corréler le rendu ou le tracé de l'axe des coordonnées lorsque (0,0,0) se trouve dans le coin supérieur gauche avec l'axe des Y + allant à l'écran.


-2

Un argument pour: (par exemple)

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, }

Le code correspond aux résultats à l'écran :

entrez la description de l'image ici

La flèche rouge serait à l' envers si vous n'utilisiez PAS l'origine en haut à gauche.

Je ne peux pas dire si c'est "pourquoi". Juste cela, c'est une bonne raison pour l'origine en haut à gauche.


2
"La flèche rouge serait à l'envers si vous n'utilisiez PAS l'origine en haut à gauche" Ouais, alors? Les développeurs de jeux écrivent-ils des graphiques via des tableaux 2D dans le code la plupart du temps?
Vaillancourt

Je ne peux pas parler pour tous les développeurs de jeux. Je le fais: newgrounds.com/portal/view/706067 Adam Atomic le fait aussi, en lisant le code source de flixel. Les bibliothèques OpenGL et SFML le font certainement. OpenCL vous permet d’abréger les points de données en X / Y, (get_global_id (dim)), mais l’allocation de mémoire initiale est 1D.
J MADISON
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.