Пример #1
0
		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());
			}
		}
Пример #2
0
		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());
			}
		}
Пример #3
0
		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());
			}
		}