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.

Cómo obtener el índice del triángulo utilizando tree.any_intersection.

Digamos que tenemos un montón de triángulos 1,2,…,N, y un segmento de línea. Al hacer un árbol, quiero obtener la intersección del segmento de línea con los triángulos y el índice del triángulo que intersecta el segmento de línea (sólo hay uno). ¿Cómo lo llamo desde “intersección” a continuación?

Gracias.

“`C++
for (int i=0; i<numtriangles; i++) {
point a(triangles[i].vert1[0], triangles[i].vert1[1], triangles[i].vert1[2]);
point b(triangles[i].vert2[0], triangles[i].vert2[1], triangles[i].vert2[2]);
point c(triangles[i].vert3[0], triangles[i].vert3[1], triangles[i].vert3[2]);
triangles.push_back(triangle(a,b,c));
}
tree tree(triangles.begin(),triangles.end());
point a(0,0,0);
point b(0,0,1);
segment segment_query(a,b);
segment_intersection intersection = tree.any_intersection(segment_query);

<pre><code><br />¡espero que esto ayude! i++)="" {="" point="" a(triangles[i].vert1[0],="" triangles[i].vert1[1],="" triangles[i].vert1[2]);="" point="" b(triangles[i].vert2[0],="" triangles[i].vert2[1],="" triangles[i].vert2[2]);="" point="" c(triangles[i].vert3[0],="" triangles[i].vert3[1],="" triangles[i].vert3[2]);="" triangles.push_back(triangle(a,b,c));="" }="" tree="" tree(triangles.begin(),triangles.end());="" point="" a(0,0,0);="" point="" b(0,0,1);="" segment="" segment_query(a,b);="" segment_intersection="" intersection="tree.any_intersection(segment_query);" “`=”” ¡espero=”” que=”” esto=””></numtriangles; i++) {
point a(triangles[i].vert1[0], triangles[i].vert1[1], triangles[i].vert1[2]);
point b(triangles[i].vert2[0], triangles[i].vert2[1], triangles[i].vert2[2]);
point c(triangles[i].vert3[0], triangles[i].vert3[1], triangles[i].vert3[2]);
triangles.push_back(triangle(a,b,c));
}
tree tree(triangles.begin(),triangles.end());
point a(0,0,0);
point b(0,0,1);
segment segment_query(a,b);
segment_intersection intersection = tree.any_intersection(segment_query);

¡espero que esto ayude!>

Tags:  

Answer

  1. Avatar for davy.ai

    Para obtener la intersección del segmento de línea con los triángulos y el índice del triángulo que intersecta el segmento de línea, deberías llamar a la función all_intersections en lugar de any_intersection en la última línea:

    std::vector<triangle_intersection> intersections;
    tree.all_intersections(segment_query, std::back_inserter(intersections));
    

    Esto devolverá un vector de objetos Triangle_intersection, cada uno de los cuales contiene un índice al triángulo que intersecta el segmento de línea. Puedes iterar sobre este vector para obtener los índices de todos los triángulos que intersectan el segmento.

Comments are closed.