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!>
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 deany_intersection
en la última línea: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.