Buenas, tengo yo un árbol binario por ahi con indices de caras (enteros) y quiero ver que triangulos caen dentro de una bounding box que le paso. El código que tengo es el siguiente:
vector<int> BTNode::search(box bbox)
{
vector<int> tmp;
tmp.clear();
// Miro si la bounding de movimiento intersecciona con mi bounding box
if ( m_BBox.intersects(bbox) )
{
// si intersecciona tengo que mirar si el nodo tiene hijos.
// no tiene hijos -> caso trivial
if ( lChild == NULL && rChild == NULL )
{
int n = data.facelist.size();
for ( int i = 0; i < n; i++ )
{
tmp.push_back(data.facelist[i]);
}
}
// Si tiene hijos relleno tmp con el valor de la búsqueda por los hijos.
else
{
if ( lChild != NULL )
{
vector<int> pepito;
pepito = lChild->search(bbox);
int n = pepito.size();
for ( int i = 0; i < n; i++ )
{
tmp.push_back(data.facelist[pepito[i]]);
}
int s = tmp.size();
}
if ( rChild != NULL )
{
vector<int> pepito;
pepito = rChild->search(bbox);
int n = pepito.size();
for ( int i = 0; i < n; i++ )
{
tmp.push_back(data.facelist[pepito[i]]);
}
int s = tmp.size();
}
}
}
else
{
// si no intersecciona ya puedo devolver tmp;
return tmp;
}
return tmp;
}
El tema es que me peta al llenar tmp con los datos de la busqueda por los hijos si el árbol tiene una profundidad mayor a 2 :huh: . Que estoy haciendo mal?
Merci!
mirar si un solo triangulo cae dentro de una boundingbox es mucho más sencillo que hacer eso ;)
puedes adaptar el algorismo de sutherland - hogmann
si no sabes como es el algorismo dimelo y te hago un ejemplo grafico y lo cuelgo ^^
ya, pero si me tengo que patear todos los triangulos del mundo, el tema me va a ir a 3 pfs (o con mala suerte a 3sfp :P ).
El arbol este es para discriminar triángulos.
solucionado! B) Pasando la variable por referencia ya lo hace to bien. (ole)