波紋

クラスの作例として雨滴が水面に落ちたときの波紋を描いてみた。

drops = list()

def setup():
    size(500,500)
    noFill()

def draw():    
    background(49, 123, 132)
    
    # 水滴の生成
    if frameCount % 20 == 0 or frameCount % 12 == 0:
        drops.append(RainDrop())
    
    # 波紋の描画と削除
    for i, drop in enumerate(drops):
        drop.draw()
        if drop.isDrawing == False:
            del drops[i]

class RainDrop():
    def __init__(self):
        self.x = random(0, width)
        self.y = random(0, width)
        self.r = 10
        self.rEnd = random(50, 300)
        self.step = 5
        self.isDrawing = True

    def draw(self):

        # 描画
        stroke(149,240,236, 255*(1-self.r/self.rEnd))
        ellipse(self.x, self.y, self.r, self.r*0.4)
        self.r += self.step
        
        # 終了判定
        if self.r > self.rEnd:
            self.isDrawing = False

コメントする