class main(): print("CLASE CENTROIDE") lados = 0 while(lados < 3): print("Introduzca el número de lados (ha de ser mayor o igual a 3):",end=" ") lados = int(input()) puntos = list() for i in range(lados): print(f"Introduzca la abscisa(x) del punto {i+1}") x = int(input()) print(f"Introduzca la ordenada(y) del punto {i+1}") y = int(input()) punt = punto.Punto(x = x, y = y) puntos.append(punt) poligono = poligono.Poligono(puntos = puntos) print(f"El poligono es: {poligono.to_string()}") centroide = Centroide(poligono = poligono) area = centroide.area() xcent = centroide.cent(area = area, xy = "x") ycent = centroide.cent(area = area, xy = "y") punto_centroide = punto.Punto(x = xcent, y = ycent) print(f"El centroide del poligono introducido es: {punto_centroide.to_string()}")
def triangulo(self, punto): tri = list() tri.append(self.poligono.puntos[punto - 1]) tri.append(self.poligono.puntos[punto]) if (punto == len(self.poligono.puntos) - 1): tri.append(self.poligono.puntos[0]) else: tri.append(self.poligono.puntos[punto + 1]) return poligono.Poligono(tri)
class main(): print("CLASE TRIANGULACION") #Debería ser convexo """v1 = punto.Punto(x=0, y = 0) v2 = punto.Punto(x= 1, y = 0) v3 = punto.Punto(x=0.5, y = 1) triangulo = poligono.Poligono(puntos = [v1,v2,v3]) triangulacion = Triangulacion(poligono = triangulo)""" #Debería ser convexo v1 = punto.Punto(x=-2.0, y=-4.0) v2 = punto.Punto(x=6.0, y=-2.0) v3 = punto.Punto(x=7.0, y=4.0) v4 = punto.Punto(x=-8.0, y=2.0) cuadrado = poligono.Poligono(puntos=[v1, v2, v3, v4]) triangulacion = Triangulacion(poligono=cuadrado) #Debería ser convexo """v1 = punto.Punto(x = 8.0, y = 2.0) v2 = punto.Punto(x = 6.0, y = 10.5) v3 = punto.Punto(x = -4.0, y = 6.5) v4 = punto.Punto(x = -10.0, y = -8.0) v5 = punto.Punto(x = 6.0, y = -4.5) pentagono = poligono.Poligono(puntos = [v1,v2,v3,v4,v5]) triangulacion = Triangulacion(poligono = pentagono)""" #Debería ser cóncavo """v1 = punto.Punto(x = 12, y = 3) v2 = punto.Punto(x = 10, y = 1) v3 = punto.Punto(x = 13, y = 1) v4 = punto.Punto(x = 14, y = 3) v5 = punto.Punto(x = 12, y = 5) v6 = punto.Punto(x = 10, y = 5) pol_concavo = poligono.Poligono(puntos = [v1,v2,v3,v4,v5,v6]) triangulacion = Triangulacion(poligono = pol_concavo)""" #Debería ser cóncavo """v1 = punto.Punto(x = 5, y = 0) v2 = punto.Punto(x = 3, y = 3) v3 = punto.Punto(x = 0, y = 4) v4 = punto.Punto(x = 3, y = 7) v5 = punto.Punto(x = 6, y = 3) v6 = punto.Punto(x = 10, y = 4) v7 = punto.Punto(x = 6, y = 7) v8 = punto.Punto(x = 5, y =10) pol_concavo = poligono.Poligono(puntos = [v1,v2,v3,v4,v5,v6]) triangulacion = Triangulacion(poligono = pol_concavo)""" print("Nuestro poligono está formado por los puntos: ", end=" ") print(triangulacion.poligono.to_string()) tipo_vector_triangulos = list() cont = 0 eliminados = 1 res = 0 while (len(triangulacion.poligono.puntos) > 3): triangulo = triangulacion.triangulo(punto=cont) ivd = area_triangulo_signo(a=triangulo.puntos[0], b=triangulo.puntos[1], c=triangulo.puntos[2]) if (ivd > 0): aux = 0 for i in range(len(triangulacion.poligono.puntos) - 1): triangulo_iv = triangulacion.triangulo_iv(triangulo=triangulo, p2=i) triangulo_vd = triangulacion.triangulo_vd(triangulo=triangulo, p2=i) triangulo_di = triangulacion.triangulo_di(triangulo=triangulo, p2=i) iv = area_triangulo_signo(a=triangulo_iv.puntos[0], b=triangulo_iv.puntos[1], c=triangulo_iv.puntos[2]) vd = area_triangulo_signo(a=triangulo_vd.puntos[0], b=triangulo_vd.puntos[1], c=triangulo_vd.puntos[2]) di = area_triangulo_signo(a=triangulo_di.puntos[0], b=triangulo_di.puntos[1], c=triangulo_di.puntos[2]) if (iv > 0 and vd > 0 and di > 0): aux = aux + 1 if (aux == 0): print("Triángulo válido") print("Eliminamos el vertice: v", end="") print(cont + eliminados) tipo_vector_triangulos.append(triangulo) triangulacion.poligono.puntos.pop(cont) eliminados = eliminados + 1 else: print( "Triángulo no válido (tiene un punto intermedio) con el vértice: v", end="") print(cont + eliminados) res = 1 break else: print( "Triángulo no válido (ángulo mayor a 180º) con el vértice: v", end="") print(cont + eliminados) res = 1 break if (res == 0): print("Nuestro array de triangulos es:", end=" ") tipo_vector_triangulos.append(triangulacion.poligono) string = "[" for i in range(len(tipo_vector_triangulos)): if (i != len(tipo_vector_triangulos) - 1): string = string + tipo_vector_triangulos[i].to_string() + ", " else: string = string + tipo_vector_triangulos[i].to_string() string = string + "]" print(string) print("El polígono es convexo") else: print("El polígono es cóncavo")
def triangulo_di(self, triangulo, p2): tri = list() tri.append(triangulo.puntos[2]) tri.append(triangulo.puntos[0]) tri.append(self.poligono.puntos[p2]) return poligono.Poligono(tri)