¿Por qué se utilizan coordenadas homogéneas en gráficos de computadora?
¿Cuál sería el problema si las coordenadas homogéneas no se usaran en transformaciones matriciales?
¿Por qué se utilizan coordenadas homogéneas en gráficos de computadora?
¿Cuál sería el problema si las coordenadas homogéneas no se usaran en transformaciones matriciales?
Respuestas:
Simplifican y unifican las matemáticas utilizadas en los gráficos:
Le permiten representar traducciones con matrices.
Le permiten representar la división por profundidad en proyecciones en perspectiva.
El primero está relacionado con la geometría afín. El segundo está relacionado con la geometría proyectiva.
Está en el nombre: las coordenadas homogéneas están bien ... homogéneas. Ser homogéneo significa una representación uniforme de rotación, traslación, escala y otras transformaciones.
Una representación uniforme permite optimizaciones. El hardware de gráficos 3D se puede especializar para realizar multiplicaciones matriciales en matrices 4x4. Incluso puede ser especializado para reconocer y ahorrar en multiplicaciones por 0 o 1, porque a menudo se usan.
No utilizar coordenadas homogéneas puede dificultar al máximo el uso de hardware altamente optimizado. Cualquier programa que reconozca que se pueden usar instrucciones optimizadas del hardware (generalmente un compilador, pero a veces las cosas son más complicadas) para coordenadas homogéneas tendrá dificultades para optimizar otras representaciones. Escogerá instrucciones menos optimizadas y, por lo tanto, no utilizará el potencial del hardware.
Como hubo llamadas para ejemplos: la PS4 de Sony puede realizar multiplicaciones matriciales masivas. Es tan bueno que se agotó durante un tiempo, porque se usaron grupos de ellos en lugar de supercomputadoras más caras. Posteriormente, Sony exigió que su hardware no se pueda utilizar con fines militares. Sí, las supercomputadoras son equipos militares.
Se ha vuelto bastante habitual que los investigadores usen tarjetas gráficas para calcular sus multiplicaciones matriciales, incluso si no hay gráficos involucrados. Simplemente porque tienen magnitudes mejores que las CPU de uso general. A modo de comparación, las CPU multinúcleo modernas tienen del orden de 16 tuberías (x0.5 o x2 no importa mucho) mientras que las GPU tienen del orden de 1024 tuberías.
No son tanto los núcleos como las tuberías lo que permite el procesamiento paralelo real. Los núcleos funcionan en hilos. Los hilos deben ser programados explícitamente. Las tuberías funcionan a nivel de instrucción. El chip puede paralelizar las instrucciones más o menos por sí solo.
complemento:
Las coordenadas homogéneas también permiten representar el infinito: en 3D, es decir, el punto en el infinito en la direcciónx,y,z. Típicamente, las fuentes de luz en posición finita o infinita se pueden representar de la misma manera.
Acerca de la transformación de perspectiva, incluso permite interpolar correctamente sin distorsión de perspectiva (a diferencia del hardware gráfico anterior en la PC).
Como gusto personal, siempre me he abstenido (cuando sea posible) de utilizar coordenadas homogéneas y preferí la formulación cartesiana simple.
La razón principal es el hecho de que las coordenadas homogéneas usan 4 entradas triviales en las matrices de transformación (0, 0, 0, 1), que implican almacenamiento y cálculo inútiles (también la sobrecarga de rutinas de cálculo de matriz de propósito general que se usan "por defecto" en este caso).
La desventaja es que necesita más cuidado al escribir las ecuaciones y perder el apoyo de la teoría de matrices, pero hasta ahora he sobrevivido.
plain Cartesian formulation
o un enlace a un recurso que describa su uso en gráficos 3D?
w
?
Imagina que quieres representar transformaciones usando matrices. Los puntos podrían almacenarse como y usted podría representar una rotación como [ u v ] = [ c o s ( θ ) - s i n ( θ ) s i n ( θ ) c o s ( θ ) ] [ x y ] y escala como [ u v ] = [ k 1
Deje R y S ser matrices de rotación y escala y T sea un vector de traducción. En gráficos de computadora, es posible que deba hacer una serie de traducciones a un punto. Podrías imaginar lo complicado que esto podría ser.
Los cálculos en coordenadas afines a menudo requieren divisiones, que son caras en comparación con las sumas o multiplicaciones. Por lo general, no es necesario dividir cuando se utilizan coordenadas proyectivas.
El uso de coordenadas proyectivas (y más generalmente, geometría proyectiva) tiende a eliminar también casos especiales, haciendo que todo sea más simple y uniforme.