お題:回る(2020.05.01)

はじめに

 この作品は 2020 年 4 月 1 日から 5 月 14 日にかけて開催された、 #dailycodingchallenge の 5 月 1 日のお題「回る」についての作品です。

ツィートにあるように、この作品では特に奥行き情報 ー 回転中心の Z 座標 ー は変動させていません。

ソースコードおよび解説

M=100
R=random

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

P=[[R(1000)-100,-R(1000),-R(10),R(25)+5] for i in [0]*M]

def draw():
    background(-8)
    for i in range(M):
        e=P[i]
        push()
        translate(e[0],e[1])
        rotateY(e[2])
        d=e[3]
        square(-d/2,-d/2,d)
        pop()
        e[1]+=1
        e[2]+=.1
        if e[1]>500:
            P[i]=[R(1000)-100,0,-R(10),R(25)+5]

 ソースコードをみてみれば、何のことはなく、 単に大きさの異なる正方形を rotateY で回しているだけだと分かります。

それぞれの正方形の位置は、 グローバル変数 P に格納されており、 i 番目の正方形の情報として P[i][0] と P[i][1] で位置 (x,y) を、 P[i][2] で回転量を、P[i][3] で正方形の大きさ表すようにしています。