2010-10-03 19 views
5

Tengo un conjunto de triángulos coplanares conectados, es decir, una malla 2D. Ahora necesito extruir algunas unidades en el eje z. La malla está definida por un conjunto de vértices que el procesador da sentido al unir contra una matriz de triángulos.Cómo extruir una malla 2D plana, dándole profundidad

Ejemplo de malla:

vértices: (0,0,0), (10,0,0), (10,10,0), (0,10,0) < - (x, y, z) Triángulos: (1, 2, 3) & (3, 4, 1) < - los números aquí hacen referencia a la posición de un vértice anterior.

Así que aquí tenemos un cuadrado en 2D. Ahora necesito agregar más vértices y triángulos a esa lista para hacer una forma extruida. Los triángulos deben estar en el sentido de las agujas del reloj; de lo contrario, se seleccionan con la cara posterior.

¿Hay un algoritmo simple para esto? Gracias.

Respuesta

10

Suponiendo que desea extruir por una distancia z, es necesario seguir estos pasos:

0) Sea n el número original de vértices (4 en el ejemplo)

1) para cada vértice en su matriz de vértices, agregue (0,0, z) a ella, y agregue el resultado a su matriz de vértices, para un total de 2 * n vértices. Por lo tanto, para su ejemplo, agregará los vértices (0,0, z), (10,0, z), (10,10, z), (0,10, z) a su matriz de vértices, para un total de 2 * 4 = 8 vértices.

2) Cree una lista de bordes (en oposición a los internos) para su malla original. Para hacer esto, crea una lista de todos los bordes del triángulo (3 bordes que van en el sentido de las agujas del reloj para cada triángulo). A continuación, elimine los pares de bordes iguales pero opuestos (estos son los bordes internos). Para su ejemplo, comenzará con 6 aristas y terminará con 4 aristas después de eliminar el par de aristas (3,1) y (1,3).

3) para cada triángulo (a, b, c) en su lista de triángulos, cree un triángulo correspondiente (a + n, b + n, c + n). Estas serán las caras extruidas

4) Finalmente, desea crear los lados de su forma extruida. Para cada borde (a, b) en la lista de bordes límite que creó en el paso 2, agregue los triángulos (a, b, b + n) y (b + n, a + n, a)

Eso es todo. Suponiendo que no haya errores tipográficos por mi parte, y sin errores tipográficos de su parte, ahora debería tener su malla deseada.

+0

¿Qué hace n se refieren a esto en esta respuesta? – Skylion

+0

¿Oh espera en el paso 3 y 3 lo mismo que en uno? – Skylion

+0

@Skylion - n es el mismo en todas partes, es decir, el número original de vértices. – brainjam

Cuestiones relacionadas