예제 #1
0
		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());
			}
		}
예제 #2
0
		public static SectorQuadtree Sector(Quadtree Quadtree, Recta2D Recta)
		{
			int Resultado = 0;
			SectorQuadtree S = Quadtree.SectorRaiz;

			Resultado = Quadtree.SectorRaiz.Pertenece(ref Recta);

			if (Resultado != -2) {
				if (Resultado == -1) {
					return S;
				} else {
					while (Resultado != -2 && Resultado != -1) {
						Resultado = S.Pertenece(ref Recta);
						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): La recta especificada no pertenece al espacio dominado por el quadtree." + Constants.vbNewLine + "Punto=" + Recta.ToString() + Constants.vbNewLine + "Espacio=" + Quadtree.Espacio.ToString());
			}
		}