Realmente no puedo entender qué causa que una superficie se superponga con otra. En un motor 3D que estoy creando, mi técnica falla en casos extremos.
Mi método es ordenar las superficies a pintar desde el más alejado hasta el más cercano. Para determinar la cercanía, estoy comparando los valores promedio de z. A veces, sin embargo, una superficie superpuesta tiene un valor z promedio más alto que el que se superpone. Por lo tanto, la superficie más alejada se pinta sobre la más cercana, lo que resulta en una representación extraña como esta:
Lo que uno debe ver es la superficie frontal púrpura del cubo solamente, mientras que la superficie lateral roja está pintada sobre la púrpura. El valor z promedio de la superficie púrpura es más alto y, por lo tanto, está "más lejos". Así que tengo dudas sobre si esta técnica es correcta.
Lo que también intenté es obtener la distancia desde la cámara (es decir, el origen) hasta la superficie, pero luego necesitaba un punto. Elegí el centro de cada superficie, pero esto no siempre parece funcionar porque no todas las superficies son tan grandes como la otra.
Por lo tanto, ¿cuál es una forma confiable de determinar el orden de proximidad de las superficies hacia el origen?