public static SectorOctreeGrafico Sector(OctreeGrafico OctreeGrafico, Punto3D Punto) { int Resultado = OctreeGrafico.SectorRaiz.Pertenece(ref Punto); SectorOctreeGrafico S = OctreeGrafico.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.Hijos[Resultado]; } } else { return S.Padre; } } return S; } } else { throw new ExcepcionGeometrica3D("OctreeGrafico (PERTENECE): El punto especificado no pertenece al espacio dominado por el quadtree." + Constants.vbNewLine + "Punto=" + Punto.ToString() + Constants.vbNewLine + "Espacio=" + OctreeGrafico.Espacio.ToString()); } }
public static SectorOctreeGrafico Sector(OctreeGrafico OctreeGrafico, Caja3D Caja) { int Resultado = OctreeGrafico.SectorRaiz.Pertenece(ref Caja); SectorOctreeGrafico S = OctreeGrafico.SectorRaiz; //PARA ENTENDER EL ALGORITMO, IR A FUNCION PERTENECE DE SECTORQUADTREE. if (Resultado != -2) { if (Resultado == -1) { return OctreeGrafico.SectorRaiz; } else { do { if (Resultado != -2) { if (Resultado == -1) { return S; } else { S = S.Hijos[Resultado]; } } else { return S.Padre; } Resultado = S.Pertenece(ref Caja); } while (Resultado != -2 && Resultado != -1); return S; } } else { throw new ExcepcionGeometrica3D("OctreeGrafico (PERTENECE): La caja especificada no pertenece al espacio dominado por el quadtree." + Constants.vbNewLine + "Caja=" + Caja.ToString() + Constants.vbNewLine + "Espacio=" + OctreeGrafico.Espacio.ToString()); } }
public static SectorOctreeGrafico[] Sectores(OctreeGrafico OctreeGrafico, Recta3D Recta) { SectorOctreeGrafico S = OctreeGrafico.SectorRaiz; List<SectorOctreeGrafico> Retorno = new List<SectorOctreeGrafico>(); if (OctreeGrafico.SectorRaiz.Espacio.Pertenece(Recta)) { InterseccionRecta(Recta, S, ref Retorno); return Retorno.ToArray(); } else { throw new ExcepcionGeometrica3D("OctreeGrafico (PERTENECE): La recta especificada no pertenece al espacio dominado por el quadtree." + Constants.vbNewLine + "Recta=" + Recta.ToString() + Constants.vbNewLine + "Espacio=" + OctreeGrafico.Espacio.ToString()); } }