差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
lecture:design_with_prototyping:p5.js編:15.ランダムとノイズ [2021/05/13 01:06] – [一本の線] baba | lecture:design_with_prototyping:p5.js編:15.ランダムとノイズ [2021/05/13 01:47] – [ふにゃふにゃする丸] baba | ||
---|---|---|---|
行 207: | 行 207: | ||
===== ふにゃふにゃする丸 ===== | ===== ふにゃふにゃする丸 ===== | ||
- | ではここまでの内容を踏まえて,ふにゃふにゃアニメーションする丸を描いてみます.まず最初に先程までの線を円上に並べ直してみます.極座標を使って描きなおします. | + | ではここまでの内容を踏まえて,ふにゃふにゃアニメーションする丸を描いてみます.まず最初に先程までの線を円上に並べ直してみます.極座標を使って描きなおします.極座標のrは,各角度毎にノイズのパラメータが決定すれば比較的フニャッとした円を描くことができます. |
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
ちょっと見た目を可愛くするのに,drawingContextというものを利用しています.これを使うと自動で描画したグラフィックに影をつけることができます. | ちょっと見た目を可愛くするのに,drawingContextというものを利用しています.これを使うと自動で描画したグラフィックに影をつけることができます. | ||
行 236: | 行 236: | ||
beginShape(); | beginShape(); | ||
for (let i = 0; i < 360; i += 12) { | for (let i = 0; i < 360; i += 12) { | ||
- | | + | r = 100 + 100*noise(i*0.1+offset); |
- | r = 100 + 20 * noise(i*0.1+offset); | + | |
curveVertex( | curveVertex( | ||
- | width / 2 + r * sin(radians(i)), | + | width / 2 + r * cos(radians(i)), |
- | height / 2 + r * cos(radians(i)) | + | height / 2 + r * sin(radians(i)) |
); | ); | ||
} | } | ||
- | endShape(CLOSE); | + | |
+ | // もう一度最初の2点を指定するのは,curveVertexを閉じるため | ||
+ | // https:// | ||
+ | for (let i = 0; i < 36; i += 12) { | ||
+ | r = 100 + 100*noise(i*0.1+offset); | ||
+ | curveVertex( | ||
+ | width / 2 + r * cos(radians(i)), | ||
+ | height / 2 + r * sin(radians(i)) | ||
+ | ); | ||
+ | } | ||
+ | |||
+ | | ||
offset += 0.01; | offset += 0.01; | ||
} | } | ||
+ | |||
</ | </ | ||
</ | </ | ||
<WRAP half column> | <WRAP half column> | ||
- | {{ : | + | {{ : |
</ | </ | ||
</ | </ | ||
+ | こんなんで,それっぽく見えるんですが,描かれた円の下側をみると微妙にとんがったところが見えます.これは,始点と終点の位置が大きくずれてしまっているためです.とは言ってもこのままでも気にならない場合は全然構わないと思います. | ||
+ | |||
+ | noiseを利用すればズレをなだらかに表示できたわけですが,結局始点と終点ではnoiseへの引数が異なるため,大きく値が異なってしまっているわけです.どのようにすればよいかですが,このページではnoiseにわたす引数をsin関数を用いて最初と最後の値が同じになるようにしてみました. | ||
+ | |||
+ | 以上,randomとnoiseに関してでした.アンビエントな表現にはnoiseを多様すると良いでしょう. | ||