Esta respuesta es mucho después del hecho, pero desde que encontré esto en Google, tal vez esto ayude a alguien. Solo quiero aclarar lo que JasonD y Notabene decían: es mucho más fácil hacer cálculos de recorte (averiguar qué debería ver y qué no debería ver por la forma en que mira, qué tan lejos está, etc.) .). En lugar de verificar si las cosas se cruzan con los planos en los bordes de su vista, simplemente compare las x, y, z de todo con xMax, xMin, yMax, ect. , ya que simplemente tienes un cubo. Es un poco más complicado si solo quieres que se muestre una parte de algo, pero las matemáticas son aún mejores con un cubo unitario que con un tronco.
Un par de cosas que encontré engañosas en otras respuestas:
-No está cortando los lados del tronco de la vista, sino que lo está deformando en un cubo utilizando transformaciones de matriz homogéneas.
-No estamos convirtiendo a una pantalla 2D con este paso. Este paso no es necesario para hacerlo. Teóricamente podríamos hacer todo nuestro trabajo sin convertir primero el frustum en un cubo, lo que sería una matemática más intuitiva pero más difícil, pero los gráficos consisten en hacer cálculos realmente rápidos, ya que hay MUCHOS cálculos por segundo para el juego promedio / lo que sea.
Más detalles: no es necesariamente un cubo unitario al que nos estamos convirtiendo, solo tiene que ser una caja rectangular para que funcionen nuestros cálculos máximo-mínimo. De hecho, en la clase utilizamos un cuadro donde la cámara mira hacia abajo del eje z, z va de 0 a 1, x va de -1 a 1 e y va de -1 a 1. En general, en matemáticas 1, 0, y -1 son buenos números para facilitar los cálculos, supongo que es por eso que no pasamos de -100 a 100 o algo así.
TLDR: facilita el recorte.
Editar: bobobobo tiene la esencia de ello. Todo es triángulos, generalmente: D.
Fuente: tomar una clase de gráficos de la universidad