/// <summary> /// Evalua si el punto está dentro del BBox /// </summary> /// <param name="PTest"></param> /// <param name="Plano"></param> /// <returns></returns> public bool Contiene(Punto3D PTest, bool Plano = true) { bool Res = false; //Evaluar si está dentro del BBox if (PTest.X >= _Min.X && PTest.X <= _Max.X) { if (PTest.Y >= _Min.Y && PTest.Y <= _Max.Y) { if (Plano) { Res = true; } else { if (PTest.Z >= _Min.Z && PTest.Z <= _Max.Z) { Res = true; } } } } return(Res); }
public void OrdenarVertices(bool SentidoHorario = false) { Triangulo temp = Analisis.AnalisisGeometrico.OrdenarVertices(this, SentidoHorario); this.P1 = temp.P1; this.P2 = temp.P2; this.P3 = temp.P3; }
/// <summary> /// /// </summary> /// <param name="P1"></param> /// <param name="P2"></param> public BBox(Punto3D P1, Punto3D P2) { //Determinar cual es el mayor y cual el menor, por eje _Max = new Punto3D(Math.Max(P1.X, P2.X), Math.Max(P1.Y, P2.X), Math.Max(P1.Z, P2.Z)); _Min = new Punto3D(Math.Min(P1.X, P2.X), Math.Min(P1.Y, P2.X), Math.Min(P1.Z, P2.Z)); }
/// <summary> /// Retorna si el punto indicado está dentro del triángulo /// </summary> /// <param name="PTest"></param> /// <returns></returns> public bool Contiene(Punto3D PTest) { bool Res = false; if (_Triangular(Operaciones.Triangulacion.TipoTriangulado.Delaunay)) { foreach (Triangulo TestTriangulo in _Triangulacion) { if (TestTriangulo.Contiene(PTest)) { Res = true; break; } } } return(Res); }
/// <summary> /// Añade el punto al BBox, ampliandolo si es necesario /// </summary> /// <param name="P"></param> public void Añadir(Punto3D P) { if (_Max == null || _Min == null) { _Max = P; _Min = P; } else { //Determinar cual es el mayor y cual el menor, por eje _Max = new Punto3D(Math.Max(_Max.X, P.X), Math.Max(_Max.Y, P.X), Math.Max(_Max.Z, P.Z)); _Min = new Punto3D(Math.Min(_Min.X, P.X), Math.Min(_Min.Y, P.X), Math.Min(_Min.Z, P.Z)); } }
///<Summary> /// Inicializa una línea con los valores del punto inicial y el final ///</Summary> public Linea(Punto3D PuntoInicio, Punto3D PuntoFin) { Inicio = PuntoInicio; Fin = PuntoFin; }
///<Summary> /// Inicializa una línea de longitud 0.0 ///</Summary> public Linea() { Inicio = new Punto3D(); Fin = new Punto3D(); }
/// <summary> /// Retorna si el punto indicado está dentro del triángulo /// </summary> /// <param name="PTest"></param> /// <returns></returns> public bool Contiene(Punto3D PTest) { return(Analisis.AnalisisGeometrico.PuntoEnTriangulo(PTest, P1, P2, P3)); }
/// <summary> /// Inicializa un triángulo con los vértices P1, P2, y P3 /// </summary> /// <param name="p1"></param> /// <param name="p2"></param> /// <param name="p3"></param> public Triangulo(Punto3D p1, Punto3D p2, Punto3D p3) { P1 = p1; P2 = p2; P3 = p3; }
/// <summary> /// Inicializa un triángulo con los vértices en el origen de coordenadas /// </summary> public Triangulo() { P1 = new Punto3D(); P2 = new Punto3D(); P3 = new Punto3D(); }
/// <summary> /// /// </summary> /// <param name="P"></param> public BBox(Punto3D P) { //Determinar cual es el mayor y cual el menor, por eje _Max = P; _Min = P; }
/// <summary> /// /// </summary> public BBox() { //Determinar cual es el mayor y cual el menor, por eje _Max = null; _Min = null; }