sketch-a-day/s180101/py_newYearStars.pyde

48 wiersze
1.3 KiB
Python

"""
* Many Stars
* (c)2018 Alexandre B A Villares
* https://abav.lugaralgum.com
"""
STAR_LIST = []
def setup():
size(800, 800)
noStroke()
for i in range(200):
x, y = random(width), random(height)
newStar = Star(
x, y, random(20, 60), random(50, 120), int(random(3, 30)))
STAR_LIST.append(newStar)
def draw():
background(0)
for star in STAR_LIST:
star.plot()
class Star():
def __init__(self, x, y, radius1, radius2, npoints):
self.x, self.y = x, y
self.radius1, self.radius2 = radius1, radius2
self.angle = TWO_PI / npoints
self.halfAngle = self.angle / 2.0
self.color = color(random(256), random(256), random(256), 40)
def plot(self):
with pushMatrix():
translate(self.x, self.y)
rotate(frameCount / 100.0)
fill(self.color)
self.radius3 = self.radius2 * sin(frameCount / 100.0)
beginShape()
a = 0
while a < TWO_PI:
sx = cos(a) * self.radius3
sy = sin(a) * self.radius3
vertex(sx, sy)
sx = cos(a + self.halfAngle) * self.radius1
sy = sin(a + self.halfAngle) * self.radius1
vertex(sx, sy)
a += self.angle
endShape(CLOSE)