0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

数学アートギャラリーをつくっていくDay8 フィボナッチ螺旋の実装をradianに統一

Last updated at Posted at 2025-12-13

Day7で、フィボナッチ螺旋の実装を確認したところ、degreeとradianの世界が混ざっていて理解しにくい状態でした。radianに統一していきます。

リポジトリ:

GitHub Page(最新):

実装をradianに統一

ギャルCopilotに丸投げる

チャットプロンプト (Agentモード、Claude Sonnet4.5):

すべてradianに統一して

ギャルCopilotからの報告

完了です✨ すべての角度をradianに統一しました!

変更したポイントは以下の通りです:

  1. angleMode: p.DEGREES → p.RADIANS
  2. 螺旋のループ: 720度 → 4π radian(p.TWO_PI * 2)
  3. offsetの増分: 60度 → π/3 radian(p.TWO_PI / 6)
  4. 黄金角: 度数法 → radian法(p.TWO_PI / (goldenRatio²))
  5. densityの変換: degree用の値をradianに変換して使用
  6. 半径の計算: rad変数の変換が不要になり、thetaを直接使用

これで、コード全体がradian単位で統一され、degreeとradianの混在による混乱がなくなりました😊💖

よしよし…わかりやすくなった気がするぞ。と画面を確認したら、何か様子がおかしいです。

チャットプロンプト (Agentモード、Claude Sonnet4.5):

なんか、すごい、短い間隔で描画するようになっちゃったんだけど・・・。ブラウザが固まっちゃうレベル。

ギャルCopilotからの報告

せんぱい、ごめんなさい💦 原因がわかりました!

densityRad の計算で、値がすごく小さくなってしまって、ループ回数が激増してます😱
修正しますね!

修正完了です✨

問題は、density(1~5の範囲)をradianに変換すると、とても小さい値(0.0174~0.0872)になってしまい、ループ回数が激増していたことです💦

今回の修正で:

  • spiralDensityを最初から 0.02~0.1 radian の範囲でマッピング
  • 不要な変換処理を削除

これでブラウザが固まらずに、スムーズに動くようになったはずです😊💖

ありがとうありがとう。と思いながら画面を確認するも、まだ駄目でした。

チャットプロンプト (Agentモード、Claude Sonnet4.5):

んー。まだだめだよ。

ギャルCopilotからの報告

せんぱい、もう一度見直します💦

radianモードでは、0.02でもまだ細かすぎるかもしれません。それと、angleのインクリメントも調整が必要です!

(中略)

修正しました✨

変更点:

  • spiralDensity: 0.02~0.1 → 0.05~0.2 に変更(ループ回数を削減)
  • angle の増分: 0.5 → 0.01 に変更(radianモードに対応)

0.5はdegree用の値だったので、radianモードでは大きすぎました。これでスムーズに動くはずです😊💖

画面から簡単に動作確認した限りは、ここまでの修正で大丈夫そうです。

コメントも直す

チャットプロンプト (Agentモード、Claude Sonnet4.5):

drawFibonacciSpiralの説明に度が残っているのが気になる

ギャルCopilotからの報告

せんぱい、確かにです💦 関数の説明をradian単位に合わせて修正しますね!

Edited
spiral.js+3-3
修正完了です✨

説明の数式を r = a × φ^(θ / (π/2)) に変更して、角度の単位も「radians」に統一しました。これでコード全体がradian単位で一貫していますね😊💖

変更前
 * この螺旋は「対数螺旋」という数式で表現できます:
 *   r = a × φ^(θ / 90°)
 * ここで:
 *   r = 中心からの距離(半径)
 *   θ = 角度(degrees)
 *   φ = 黄金比(約1.618)
 *   a = 初期サイズの係数
変更後
 * この螺旋は「対数螺旋」という数式で表現できます:
 *   r = a × φ^(θ / (π/2))
 * ここで:
 *   r = 中心からの距離(半径)
 *   θ = 角度(radians)
 *   φ = 黄金比(約1.618)
 *   a = 初期サイズの係数

ついでに聞いてみます。

チャットプロンプト (Agentモード、Claude Sonnet4.5):

対数螺旋って、r=ae^bθ じゃないの? eじゃなくてφなの?

ギャルCopilotの回答

せんぱい、いい質問です!✨

おっしゃる通り、対数螺旋の一般式は r = a × e^(bθ) です。

でも、フィボナッチ螺旋(黄金螺旋)では、黄金比φを使った特別な形で表現されることが多いんです:

  • 一般的な対数螺旋: r = a × e^(bθ)
  • 黄金螺旋: r = a × φ^(θ / (π/2))

数学的には φ^x = e^(x ln(φ)) なので、黄金螺旋も対数螺旋の一種です💡

コメントをもっと正確にしますね!

なるほど。(信じられないことに)lnの定義すらも忘れかけており「φ^x = e^(x ln(φ)) なので」がうまく咀嚼できませんが、そういうものと理解します。

ここ以外も細かい演出がされていますが、おなか一杯になってきたので、フィボナッチ螺旋はこれで終わりにします。

次やること

マンデルブロ集合?と思ったけど、フィボナッチ螺旋の実装不備を解消していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?