Esempio n. 1
0
class Art(object):

    description = "Use a higher resolution image downsampled to improve perceived clarity"

    def __init__(self, matrix):
        self.hue = getHueGen(0.001)
        self.theta = 0.0
        self.matrix = OPCMatrix(SCALE*matrix.width, SCALE*matrix.height, None, True)
        self.x = SCALE * matrix.width / 2.0
        self.y = SCALE * matrix.height / 2.0
        self.r = 6.5 * SCALE

    def irnd(self, n):
        return int(round(n))

    def poly(self, r):
        tc = cos(self.theta)
        ts = sin(self.theta)

        poly = [
                (self.irnd(self.x + r * tc - r * ts) ,  self.irnd(self.y + r * tc  + r * ts)), # UL
                (self.irnd(self.x - r * tc - r * ts) ,  self.irnd(self.y + r * tc  - r * ts)), # UR
                (self.irnd(self.x - r * tc + r * ts) ,  self.irnd(self.y - r * tc  - r * ts)), # BR
                (self.irnd(self.x + r * tc + r * ts) ,  self.irnd(self.y - r * tc  + r * ts)), # BL
            ]

        return poly

    def start(self, matrix):
        pass

    def refresh(self, matrix):
        self.theta += 0.05
        color = self.hue.next()
        self.matrix.shift(dv=0.8)

        for polys in range(0, SCALE*7, 2):
            self.matrix.drawPoly(self.poly(self.r-0.2*polys), color)

        matrix.copy(self.matrix)
  
    def interval(self):
        return 30