Quiero escribir un programa para generar arcos, una forma arquitectónica común, y exportarlos a un formato de objeto de frente de onda para compartirlos con varios editores de gráficos tridimensionales. Para ello, necesito generar normales para incluirlas en el objeto wavefront. Entiendo que las normales representan la orientación de una superficie en un vértice. Necesito entender cómo calcularlas, y específicamente qué significan las coordenadas i,j,k.
Respuesta
¿Demasiados anuncios?Si está creando una malla poligonal, presumiblemente querrá el vector normal dado una cara triangular particular.
En primer lugar, las definiciones: un normal en algún punto de una superficie es un vector que apunta perpendicularmente a esa superficie en ese punto. Como cada superficie (localmente) tiene dos lados, tienes dos direcciones válidas de vectores normales: un lado en el que el vector apuntaría hacia la superficie, y un lado en el que el vector apuntaría lejos de la superficie.
Ahora, supongamos que tenemos un triángulo determinado por los tres puntos $a = (a_1,a_2,a_3), b = (b_1,b_2,b_3),$ y $c = (c_1,c_2,c_3)$ . Definir $$ v_{ab}=(b_1-a_1,b_2-a_2,b_3-a_3)\\ v_{bc}=(c_1-b_1,c_2-b_2,c_3-b_3) $$ Para encontrar un vector normal, calcula $v_{ab}\times v_{bc}$ o, para la orientación opuesta, $v_{bc} \times v_{ab}$ , donde " $\times$ " denota aquí el cross-product .