public static SectorQuadtree Sector(Quadtree Quadtree, ref Figura2D Figura2D) { int Resultado = Quadtree.SectorRaiz.Pertenece(ref Figura2D); SectorQuadtree S = Quadtree.SectorRaiz; //PARA ENTENDER EL ALGORITMO, IR A FUNCION PERTENECE DE SECTORQUADTREE. if (Resultado != -2) { if (Resultado == -1) { return Quadtree.SectorRaiz; } else { do { if (Resultado != -2) { if (Resultado == -1) { return S; } else { S = S.SubSectores[Resultado]; } } else { return S.Padre; } Resultado = S.Pertenece(ref Figura2D); } while (Resultado != -2 && Resultado != -1); return S; } } else { throw new ExcepcionGeometrica2D("OCTREE (PERTENECE): La figura especificada no pertenece al espacio dominado por el quadtree." + Constants.vbNewLine + "Figura2D=" + Figura2D.ToString() + Constants.vbNewLine + "Espacio=" + Quadtree.Espacio.ToString()); } }
public static SectorQuadtree Sector(Quadtree Quadtree, Punto2D Punto) { int Resultado = Quadtree.SectorRaiz.Pertenece(ref Punto); SectorQuadtree S = Quadtree.SectorRaiz; if (Resultado != -2) { if (Resultado == -1) { return S; } else { while (Resultado != -2 && Resultado != -1) { Resultado = S.Pertenece(ref Punto); if (Resultado != -2) { if (Resultado == -1) { return S; } else { S = S.SubSectores[Resultado]; } } else { return S.Padre; } } return S; } } else { throw new ExcepcionGeometrica2D("OCTREE (PERTENECE): El punto especificado no pertenece al espacio dominado por el quadtree." + Constants.vbNewLine + "Punto=" + Punto.ToString() + Constants.vbNewLine + "Espacio=" + Quadtree.Espacio.ToString()); } }
public static SectorQuadtree[] Sectores(Quadtree Quadtree, Recta2D Recta) { SectorQuadtree S = Quadtree.SectorRaiz; List<SectorQuadtree> Retorno = new List<SectorQuadtree>(); if (Quadtree.SectorRaiz.Espacio.Pertenece(Recta)) { InterseccionRecta(Recta, S, ref Retorno); return Retorno.ToArray(); } else { throw new ExcepcionGeometrica2D("OCTREE (PERTENECE): La recta especificado no pertenece al espacio dominado por el quadtree." + Constants.vbNewLine + "Recta=" + Recta.ToString() + Constants.vbNewLine + "Espacio=" + Quadtree.Espacio.ToString()); } }