¿Por qué está el origen en las coordenadas de gráficos de computadora en la parte superior izquierda?

37

Por lo que he visto, casi todas las cosas usan coordenadas donde (0, 0) está en la parte superior izquierda y el eje Y positivo va en la dirección hacia abajo de la pantalla.

¿Por qué es como este? ¿Por qué no el eje Y positivo convencional va hacia arriba como se muestra en los gráficos en clases de matemáticas simples?

usuario3387566
fuente
77
Yo diría que comenzar desde arriba y aumentar a medida que desciende tiene más sentido que la convención matemática, ya que se relaciona más estrechamente con la forma en que se leen y escriben los idiomas indoeuropeos.
Panda Pyjama
3
Creo que el Y + tiene sentido al dibujar objetos físicos, ya que el suelo es tu origen y la mayor parte de tu mundo está por encima del suelo. Sin embargo, para las pantallas, supongo que está relacionado con imitar la forma en que se escriben los idiomas indoeuropeos.
Panda Pyjama
44
¿Las coordenadas de dispositivo normalizadas de OpenGL no tienen un eje Y hacia arriba?
Ray
1
Entonces, básicamente, se pregunta "¿Cuál es el origen del origen?"
Ken

Respuestas:

43

Esto es causado en la historia. Las primeras computadoras tenían tubos de rayos catódicos (CRT) que "dibujan" la imagen con un rayo catódico desde la esquina superior izquierda a la inferior derecha.

Para facilitar la interfaz entre la memoria de la tarjeta gráfica y el CRT, la memoria se leyó desde el principio y la imagen se dibujó desde la parte superior izquierda (con la dirección de memoria más baja) hacia la parte inferior derecha (con la dirección de memoria más alta).

Extensión (basada en los comentarios)

Los CRT se basan en televisores analógicos que estaban disponibles en ese momento.

Los televisores crean la imagen línea por línea primero de izquierda a derecha y luego de arriba a abajo . Se puede suponer que la razón de esto se basa en el estilo de escritura en los países occidentales.

Uwe Plonus
fuente
77
Claro, pero ¿por qué los CRT se dibujan desde la parte superior izquierda (visto desde el espectador)? ¿Por qué no verticalmente? ¿Por qué no de derecha a izquierda? ¿Por qué no de abajo hacia arriba?
Panda Pyjama
1
Puede encontrar la creación de imágenes de un CRT aquí . Básicamente, esto es para la televisión analógica, pero un CRT para una computadora tiene la misma tecnología.
Uwe Plonus
12
Los CRT de computadora @PandaPajama lo hacen porque así son los estándares de TV analógica, e inicialmente para las computadoras domésticas a menudo se usaban televisores en lugar de monitores especializados. Por qué los primeros televisores transmitieron información al dividirla en líneas de exploración y dibujar líneas de exploración de izquierda a derecha, no estoy seguro, pero eso sería coherente con la forma en que escribimos, por lo que podría ser una razón suficiente para elegir entre opciones arbitrarias.
Peteris
2
@Peteris: La forma en que escriben los europeos
Mooing Duck
1
Técnicamente, el CRT se basa en la etapa superior derecha a la etapa inferior izquierda.
ps2goat
3

Esta es una gran pregunta que he pensado muchas veces. La respuesta simple a "por qué" es porque los formatos de TV también dibujaron sus líneas de izquierda a derecha y luego de arriba a abajo. Los monitores de computadora originales eran pantallas CRT (televisores pequeños), por lo que el formato naturalmente permaneció igual. Cuando los monitores se convirtieron en pantallas planas (y los televisores también se convirtieron en pantallas planas), era igualmente natural mantener el mismo formato para facilitar la compatibilidad.

Por supuesto, puede preguntar: ¿por qué los televisores dibujan de esta manera? Se inventaron a principios del siglo XX, por lo que puede imaginar cuánto pensamiento o falta de él tuvo el diseño, incluso si se cuestionó. Nota: no pretende ser irrespetuoso, ya que es increíblemente más difícil obtener ecuaciones para desviar los rayos magnéticamente a las líneas adecuadas en una pantalla, en lugar de una simple matriz de pequeñas "bombillas". (Esto plantea un poco la pregunta de cómo inventaron los CRT antes de la matriz simple de puntos, ¿a principios del siglo XX?)

Sin embargo, supongo que probablemente nunca fue cuestionado (algo malo) ya que los idiomas occidentales escriben palabras de izquierda a derecha y de arriba a abajo. Probablemente nadie concibió la posibilidad de hacerlo de manera diferente.

Personalmente, no me gusta este formato. Adquirí esta actitud al programar juegos y otras simulaciones que involucraban órbitas elípticas. Siempre que busque ecuaciones de dibujo que involucren pecado, cos o tan, debe invertir cuidadosamente los signos que tratan con los parámetros del eje y ... o obtendrá el dibujo incorrecto. Un ejemplo serían las ecuaciones paramétricas para una elipse dibujada en cualquier ángulo 2D. Puede ser una verdadera pesadilla diseccionar el pecado pecado, pecado cos y cosas similares.

Hablando sucintamente en términos matemáticos, la pantalla está en el Cuadrante 4 en lugar del Cuadrante 1. Esto es innecesariamente complicado.

Por cierto, cuando llegas a 3 dimensiones, se considera que el eje z va "hacia arriba" en la dirección positiva. Un poco irónico. [EDITAR]: Tal vez no, mira mi comentario a continuación.

2 cosas más que me di cuenta / encontré:

Los relojes de sol en el hemisferio norte (que tienen punteros orientados al norte y discos paralelos al suelo) siempre giran en sentido horario . Entonces, si ponemos la hora cero en la parte superior de la "cara del reloj", entonces el puntero de sombra comienza a moverse hacia la derecha. Este podría ser el origen de la dirección de izquierda a derecha en los idiomas occidentales, propagándose a las coordenadas cartesianas y las pantallas de TV / computadora.

Las computadoras viejas no dibujaban tanto objetos gráficos. Dibujaron texto en un símbolo del sistema. Por lo tanto, es natural poner la línea 0 en y = 0. Si tuviéramos un origen en la parte inferior izquierda, la matemática de dibujar líneas de texto sería un poco más complicada, y podría haber sido un gran problema para esas viejas computadoras lentas (que incluso hicieron un atajo para aumentar en 1, por amor de Dios, llamado "++"). Además, necesita conocer la resolución de la pantalla, mientras que si solo hace la línea 0 en y = 0, no necesita conocer la resolución.

DrZ214
fuente
2
Haces que parezca que a principios del siglo XX estuvo poblado por neandertales;)
bummzack
1
Aw, solo estaba tratando de enfatizar el marcado contraste en la complejidad entre los CRT y una matriz de LED. Los CRT tienen matemáticas increíblemente complejas involucradas en la desviación magnética de los rayos de luz. Una matriz de puntos es mucho más fácil de entender: simplemente envíe corriente eléctrica a los LED correctos en el momento adecuado. En todo caso, esta gran magnitud de mayor complejidad sugiere que a principios del siglo XX estuvo poblada por más o mejores genios, ya que tuvieron que hacer esto más complejo en una era mucho más limitada.
DrZ214
Las matrices LED se utilizaron para mostrar información, nunca se hicieron populares para televisores y monitores de computadora. Las pantallas planas modernas no son matrices LED, sino LCD retroiluminada. Los LED solo se usan para retroiluminar en algunas pantallas, pero la imagen no es creada por los LED. La pantalla LCD es una técnica simple, pero mejorar la resolución de la pantalla del reloj antiguo a cientos o miles de píxeles en la pantalla (¡y algo más, ya que necesita tres subpíxeles para agregar color!) No es necesariamente mucho más fácil que modular una señal de onda controlar un haz EM (que es comparable a la transmisión de radio)
oerkelens
El eje Z hacia arriba no es irónico, es matemático. El sistema de coordenadas debe ser diestro, por lo que si + X está a la derecha y + Y está en la pantalla, eso hace que + Z suba. Al igual que si retenemos + X a la derecha, + Y hacia abajo, + Z está en la pantalla.
tpg2114
1
@ tgp2114 ¿Por qué el sistema de coordenadas debe ser diestro?
Taemyr
3

Anexo: Los primeros gráficos se realizaron en monitores vectoriales , a solo un paso de los osciloscopios vistos en el laboratorio donde (0,0) estaría en el medio exacto de la pantalla, sujeto a que se gire un botón para establecer la escala X / Y, X / Y offset, y posiblemente inversión X / Y.

El hardware dedicado de los "Asteroides" de Atari (1979), por ejemplo, utilizaba una pantalla vectorial; Sería interesante saber cuál fue su sistema de coordenadas del programa.

El sistema "Sketchpad" de Ivan Sutherland (1963) se basó en una pantalla vectorial TX-2 , y en "Sketchpad: Un sistema de comunicación gráfica hombre-máquina" (tesis doctoral, enero de 1963), escribe en la página 70 y siguientes:

El sistema de coordenadas del sistema de visualización TX-2 tiene origen en el centro del alcance y requiere diez bits de información de desviación ubicada a la izquierda de las subpalabras de computadora de 18 bits para cada eje.

...

Para mayor comodidad en la representación de muchas variables componentes y para una precisión de más de 18 bits, Sketchpad utiliza un sistema de coordenadas interno para dibujar representaciones divorciadas de la representación requerida por el sistema de visualización. Este sistema interno se denomina sistema de coordenadas de "página". Al pensar en los dibujos de Sketchpad, las coordenadas de la página se consideran fijas. Una transformación de página a alcance ofrece la posibilidad de ver en el alcance cualquier parte de la página deseada, en cualquier grado de aumento, como a través de una lupa (...) Un factor de escala para la pantalla controla el tamaño del cuadrado que aparecerá en el alcance. El número real guardado es la mitad de la longitud del lado del cuadrado, llamado SCSZ para SCope SiZe) como se muestra en la Figura 5.2. También se guardan las coordenadas de página del centro del cuadrado del alcance. Al cambiar estos números, la parte de la página que se muestra en el alcance puede cambiar de tamaño y moverse, pero no girarse.

El diagrama 5.2 en la página 73 muestra que el "sistema de coordenadas de la página" utiliza la convención matemática del sistema de coordenadas cartesianas X / Y. (Uno podría preguntarse por qué esa convención es como es ...)

David Tonhofer
fuente
pero: las pantallas de vector solo se usaron porque la memoria era demasiado rara para representar una imagen visualizable completa y las listas de vectores + duración de presentación + conexiones necesitan mucha menos memoria (como polígonos frente a vóxeles)
Micka
2

No todo está en la parte superior izquierda.

OpenGL, por ejemplo, especifica que el origen está en la parte inferior izquierda, y esto es generalizado en toda la API: coordenadas de textura, ventanas gráficas, rectángulos de texel, la proyección orto estándar: está en la parte inferior izquierda todo el camino.

Hay una diferencia en pensar aquí.

En las pantallas de las computadoras, como en los libros, cuando las personas leen (y supongo que aquí hay un idioma como el inglés), leen de izquierda a derecha y de arriba a abajo. Lo hizo usted mismo cuando escribió esta pregunta y lo hace cuando lee las respuestas.

En matemáticas y diseño cuando trazas un gráfico, tienes un eje X y un eje Y con X positivo hacia la izquierda e Y positivo hacia arriba.

Si está construyendo algo así como una GUI 2D en un juego, puede ser más fácil e intuitivo para muchas personas diseñarlo de la manera "superior izquierda es el origen".

Si está construyendo algo para imitar un diseño o diseño en papel cuadriculado, puede ser más fácil e intuitivo para muchas personas diseñarlo de la manera "inferior a la izquierda es el origen".

De hecho, ambas son convenciones bastante informales, y si está configurando una proyección ortopédica, puede elegir tener su origen en cualquier punto arbitrario dentro (o fuera) de la pantalla, con una X positiva tanto a la izquierda como a la derecha y positiva Y subiendo o bajando. Es solo una cuestión de ajustar su matriz de proyección en consecuencia.

Por lo tanto, lo único importante es elegir qué convención va a usar y usarla de manera consistente.

Maximus Minimus
fuente
Gran respuesta. Estoy creando un algoritmo con toneladas de trigonometría que finalmente conducirá a que se dibujen cosas en la pantalla, y no estaba muy seguro de si estaba rompiendo algún tabú o convención al hacer que el eje y positivo subiera.
Alexander Høst
-1

Porque las pantallas comienzan a representar la imagen desde la esquina superior izquierda. Sería más fácil correlacionar la representación o el dibujo del eje de coordenadas cuando (0,0,0) está en la esquina superior izquierda con el eje + Y entrando en la pantalla.

mohanjot
fuente
-2

Un argumento PARA: (Por ejemplo)

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

El código coincide con los resultados en la pantalla :

ingrese la descripción de la imagen aquí

Flecha roja sería al revés si NO usaras el origen superior izquierdo.

No puedo decir si esto es "por qué". Solo eso, es una buena razón para el origen superior izquierdo.

J MADISON
fuente
2
"La flecha roja estaría al revés si NO usaras el origen superior izquierdo" ¿ Sí, entonces? ¿Los desarrolladores de juegos escriben gráficos a través de matrices 2d en código la mayor parte del tiempo?
Vaillancourt
No puedo hablar por todos los desarrolladores de juegos. Lo hago: newgrounds.com/portal/view/706067 Adam Atomic también lo hace, al leer el código fuente de flixel. Las bibliotecas OpenGL y SFML definitivamente lo hacen. OpenCL le permite abstraer los puntos de datos en X / Y, (get_global_id (dim)) pero la asignación de memoria inicial es 1D.
J MADISON