from machine import Pin, I2C
import ssd1306
import array
import math
# ESP32 Pin assignment
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
class Poligono(): # Dibuja un polígono regular
def __init__(self, centro, lados, radio, rotacion):
self.xc = centro[0]
self.yc = centro[1]
self.lados = lados
self.radio = radio
self.rotacion = rotacion
def calcula_vertices(self):
vertices=[]
for i in range (5):
angulo_n=((2*math.pi*i)/self.lados)-self.rotacion
theta=angulo_n
y_n=int(self.yc+self.radio*(math.cos(theta)))
vertices.append(y_n)
x_n=int(self.xc+self.radio*(math.sin(theta)))
vertices.append(x_n)
return(vertices)
def dibuja(self): # Dibuja el polígono en la pantalla
oled.poly(0, 0, array.array('h', self.calcula_vertices()))
class Triangulo(Poligono):
def __init__(self,centro,radio):
super().__init__(centro, 3, radio,((-1*(3-2)/(2*3)))*(math.pi))#Constructor del padre
#pol=Poligono([60,30],5,31,3.14159/2)
#pol.dibuja()
tri=Triangulo([31,63],16)
tri.dibuja()
oled.show()