今までの話
今までProcessingやp5.jsで多角形を描く時は、
例えば六角形なら 360度 / n で角度を6つ指定し、
x = r * cos(θ), y = r * sin(θ) の式にその角度を当てはめ、その6つの点の座標をつなぎ合わせることで実装していました。
文章で描くとわかりにくいですね。コードで書いてみます。
この方法を応用すると、星も描くことができます。
5つのとがったツノのある星を描きたい場合、前述の方法で10個の点の座標を算出し、
中心からの距離 r を長く→短く→長く→短く→…と指定していくことで実装していました。
こちらもコードで書いてみます。
もうちょっと詳しくは以下の記事をご覧ください。古い記事ですが頑張って書いたので…
Processingで多角形・星を描く : だらっと学習帳
問題点
従来手法は「指定角度の間の途中経路がxとyの式で表せない」という問題点があります。
六角形なら 360/6 = 60度きざみ、つまり0度、60度、120度、180度、240度、300度の時は上記のxとyの式で表すことができますが、
では30度の時は?133度の時は?0.123456789度の時は?…xとyの値がどこにあるかわからないのです。
この課題をクリアすると「オブジェクト(円など)を六角形のかたちの経路に沿って移動させる」「ハートなど、xとyの式で表せる他の図形とモーフィングさせる」ことができるようになります。
解決方法
n角形の式、探してみたらありました!あと星も。探せばあるものですね。資料として残してくださった方に感謝です。
Parametric equation of a regular pentagon – GeoGebra
正多角形とスピログラフの数式 | シキノート
上記の式をp5.jsのコードに入れ込んでみました(Processingでも同様にできると思います)。
六角形の場合はこんな感じです。
星の場合はこんな感じです。
この式があれば、上記のように0度以上360度未満の区間で任意のステップ(この場合は1度)で角度を決めてxとyの値を算出することができます。いい感じです!
作品例
上記の式を利用することでこのような作品をつくりました。
今までProcessingやp5.jsで多角形を描く時は、
例えば六角形なら 360度 / n で角度を6つ指定し、
x = r * cos(θ), y = r * sin(θ) の式にその角度を当てはめ、その6つの点の座標をつなぎ合わせることで実装していました。
文章で描くとわかりにくいですね。コードで書いてみます。
See the Pen
Hexagon by reona396 (@reona396)
on CodePen.
この方法を応用すると、星も描くことができます。
5つのとがったツノのある星を描きたい場合、前述の方法で10個の点の座標を算出し、
中心からの距離 r を長く→短く→長く→短く→…と指定していくことで実装していました。
こちらもコードで書いてみます。
See the Pen
Star by reona396 (@reona396)
on CodePen.
もうちょっと詳しくは以下の記事をご覧ください。古い記事ですが頑張って書いたので…
Processingで多角形・星を描く : だらっと学習帳
問題点
従来手法は「指定角度の間の途中経路がxとyの式で表せない」という問題点があります。
六角形なら 360/6 = 60度きざみ、つまり0度、60度、120度、180度、240度、300度の時は上記のxとyの式で表すことができますが、
では30度の時は?133度の時は?0.123456789度の時は?…xとyの値がどこにあるかわからないのです。
この課題をクリアすると「オブジェクト(円など)を六角形のかたちの経路に沿って移動させる」「ハートなど、xとyの式で表せる他の図形とモーフィングさせる」ことができるようになります。
解決方法
n角形の式、探してみたらありました!あと星も。探せばあるものですね。資料として残してくださった方に感謝です。
Parametric equation of a regular pentagon – GeoGebra
正多角形とスピログラフの数式 | シキノート
上記の式をp5.jsのコードに入れ込んでみました(Processingでも同様にできると思います)。
六角形の場合はこんな感じです。
See the Pen
formula01 by reona396 (@reona396)
on CodePen.
星の場合はこんな感じです。
See the Pen
formula02 by reona396 (@reona396)
on CodePen.
この式があれば、上記のように0度以上360度未満の区間で任意のステップ(この場合は1度)で角度を決めてxとyの値を算出することができます。いい感じです!
作品例
上記の式を利用することでこのような作品をつくりました。
レオナ@reona396
p5.jsで、三角形は三角形の道を、六角形は六角形の道を進むアニメーションを描きました。
2019/06/04 12:26:20
#Processing #p5js #generative #creativecoding #OpenProcessing #NEORT… https://t.co/cB8ZFLWkzT
レオナ@reona396
p5.jsで星が星のかたちに動くアニメーションを作りました💫
2019/06/05 22:48:49
#Processing #p5js #generative #creativecoding #OpenProcessing #NEORT
Shape & Path 2… https://t.co/At0s5jHATj