es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de encontrar todos los bordes de una figura en 3D dadas sus vértices?

Tengo una lista de vértices de una forma tridimensional simple como una pirámide, un cubo o un dodecaedro, ¿existe un algoritmo para encontrar todas las conexiones entre los “vértices externos” que forman una cara?
Por cara me refiero a una forma 2D regular (un cuadrado para un cubo, triángulos para una pirámide…).

Por ejemplo, una vez que proyecté una pirámide en 2D, tengo una matriz de 8 coordenadas x, y para cada vértice: int[] coords = new int[8][2] y llegué a esta forma de calcularlos:

for(int i = 0; i<4; i++){
    for(int a = 1; a<=4; a++){
        if(i+a!=3){
            if(a>i){
                edges.add(new Line( coords[i][0] * CRECIMIENTO + desplazamiento ,
                                    coords[i][1] * CRECIMIENTO + desplazamiento,
                                    coords[a][0] * CRECIMIENTO + desplazamiento,
                                    coords[a][1] * CRECIMIENTO + desplazamiento));
            }
        }
    }
}

Esto solo funciona con pirámides, me pregunto si hay una forma de calcular todos los bordes de un conjunto de coordenadas [n][2] dado que representa una forma tridimensional proyectada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, existe un algoritmo para encontrar todas las conexiones entre los vértices exteriores que conforman una cara de una forma tridimensional. Esto se denomina algoritmo de “envoltura convexa”. El algoritmo de envoltura convexa toma un conjunto de puntos (los vértices) y calcula el polígono convexo más pequeño (la cara) que encierra todos los puntos.

    Para aplicar el algoritmo de envoltura convexa a una forma tridimensional, primero necesitarías proyectar la forma en 2D, como lo has hecho con la pirámide. Una vez que tengas el conjunto de vértices en 2D, puedes aplicar el algoritmo de envoltura convexa para encontrar los bordes que conforman la cara de la forma.

    Existen diversas implementaciones del algoritmo de envoltura convexa, como el escaneo de Graham, la marcha de Jarvis y el algoritmo QuickHull. Algunas bibliotecas, como Java Topology Suite, proporcionan implementaciones listas para usar del algoritmo de envoltura convexa.

    En resumen, el algoritmo de envoltura convexa se puede utilizar para encontrar todas las conexiones entre los vértices exteriores que conforman una cara de una forma tridimensional. Para aplicar el algoritmo de envoltura convexa, primero necesitarías proyectar la forma en 2D y luego utilizar una de las implementaciones disponibles del algoritmo.

Comments are closed.