観測 031
龍
Ryuu — Dragon
画かボタンを押すと、点が減ります。40,000 → 625 → 40 → 1 の次は、40,000に戻ります。
少数点では、点を大きくし、残像を長くして通り道を見やすくしています。
「聴く」は、表示中の点の配置を音へ写します。点数を変えると音を作り直します。
胴は一本の芯のまわりを巻いています。尾から頭まで、二周たらずです。
巻きの位相は時間とともに進みます。
点は体の軸のまわりを回りながら、同時に前へ送られます。
巻きの太い場所と細い場所があります。その違いも頭から尾へ移っていきます。
芯そのものも撓みます。
高さの撓みと奥行きの撓みは速さが違うので、同じ姿は二度戻ってきません。
頭、二本の角、二本の鬚、四本の脚、背の鬣は、どれも胴の上の一点から測った場所に置かれています。
胴がそこで曲がれば、その場所ごと動きます。
付け根が離れないのは、同じ数を見ているからです。
鬚は付け根では動かず、先へ行くほど遅れて振れます。
四本の脚は互いに違う時刻で掻きます。
点を減らすと、鬣と脚と鬚が先に切れます。
残った胴は巻きの筋だけになり、やがて一つの点の通り道になります。
龍だったものは、どの一点にも入っていません。
式を読む・確かめる
(i, t,
b = i < 26400, hd = i < 32400, hr = i < 34800, wk = i < 37200, m = (i - 37200) / 700 | 0,
S = b ? (i / 66 | 0) / 399 : i < 37200 ? 1 : m < 2 ? .8 : .44,
W3 = S * 11 + t * .5, ro = (9 + 32 * max(0, sin(PI * min(1, S)))) * (1 + .28 * sin(S * 3 + t * .5)),
rd = 100 * cos(PI * min(1, S)), Cx = 300 * S - 150 + 26 * sin(S * 4 + t * .25),
Cy = ro * cos(W3) + 46 * sin(S * 3.4 + t * .25), Cz = ro * sin(W3) + 40 * cos(S * 2.6 + t * .5),
Tx = 300 + 104 * cos(S * 4 + t * .25), Ty = rd * cos(W3) - ro * 11 * sin(W3) + 156 * cos(S * 3.4 + t * .25),
Tz = rd * sin(W3) + ro * 11 * cos(W3) - 104 * sin(S * 2.6 + t * .5),
Th = max(.01, hypot(Tx, Tz)), TL = max(.01, hypot(Th, Ty)), G = Th * TL,
R = 2.2 + 15 * max(0, min(1, S)) ** .45 * (1 - .5 * max(0, min(1, S)) ** 5),
j = i % 66, a = j / 60 * TAU, cr = j > 59, v = (i * .754878 % 1), z = i % 2 ? 1 : -1,
e = (i * .618034 % 1) * 2 - 1, g = i * 2.39996, rr = sqrt(max(0, 1 - e * e)),
p = hr ? ((i - 32400) / 2 | 0) / 1199 : wk ? ((i - 34800) / 2 | 0) / 1199 : (i - 37200) % 700 / 699,
cm = (3 + 7 * max(0, sin(PI * min(1, S)))) * v, W = S * TAU * 2 + t * .75,
lt = b ? (cr ? cm * .5 * sin(W + 1) : 0) : hd ? 23 + 30 * e : hr ? 6 - 40 * p - 11 * sin(PI * p)
: wk ? 46 - 74 * p : -5 - 13 * p + 20 * sin(PI * p) * sin(t * .75 - m * 1.9),
ln = b ? (cr ? 1.4 * e + cm * .4 * sin(W) : R * cos(a)) : hd ? (12 - 5.5 * e) * rr * cos(g)
: hr ? z * (5 + 8 * p) : wk ? z * (6 + 12 * p) + 8 * p * sin(p * TAU * 1.25 - t * .75 + z)
: (m % 2 ? 1 : -1) * (R * .85 + 11 * p),
lb = b ? (cr ? R + cm : R * sin(a)) : hd ? (10 - 4.5 * e) * rr * sin(g) - 2.4 * max(0, e)
: hr ? 8 + 30 * p + 9 * sin(PI * p)
: wk ? -4 - 28 * p + 14 * p * sin(p * TAU * 1.25 - t * .5 + z * 2) : -R * .7 - 44 * p - 10 * sin(PI * p),
X = Cx + lt * Tx / TL - ln * Tz / Th - lb * Tx * Ty / G, Y = Cy + lt * Ty / TL + lb * Th / TL,
Z = Cz + lt * Tz / TL + ln * Tx / Th - lb * Ty * Tz / G,
Dx = 200 + 11 * sin(t * .25 + 2.8), Dy = 200 + 9 * cos(t * .25 + 5.1) + 4 * sin(t * .75 + 2.8)
) => [Dx + (X + .28 * Z) * .92, Dy + (Y - .38 * Z) * .92]
この式の指紋
sha256:a255460f2d1752c5121056eb8cf70ce76e47483ae2e6611c8b11d7e1c931c9ab
同じ点番号と時刻を渡すと、同じ座標が得られます。
残像や点の見え方は、描画設定と端末によって変わります。
上のボタンで式をそのまま持ち出せます。手元で数え直すなら:
pbpaste > f.txt && printf %s "$(cat f.txt)" | shasum -a 256
持ち帰って走らせてください。式を変えると、どんな姿になるでしょう。 この式を、その場で走らせて書き換える →