Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Busquedas En Un Árbol

Iniciado por vincent, 15 de Abril de 2005, 03:10:39 PM

« anterior - próximo »

vincent

 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!
Desarrollo en .Net y metodologías http://devnettips.blogspot.com

Buffon

 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 ^^

vincent

 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.

Desarrollo en .Net y metodologías http://devnettips.blogspot.com

vincent

 solucionado!  B)  Pasando la variable por referencia ya lo hace to bien.   (ole)  
Desarrollo en .Net y metodologías http://devnettips.blogspot.com






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.