対数螺旋を書く方法を理解したので書きます。
プログラム
いつもどおり言語はJavaScriptです。「対数螺旋ってなに?」「極座標表示って?」といった数学的な解説は他所に任せます。
const r = theta => { const a = 1, b = 1; // 好きな値に設定してください。 return a * Math.pow(Math.E, b * theta); } const position = []; // ここに対数螺旋上の点を入れていきます。あとは好きなようにグラフ表示してください。 for (let theta = 0; theta < 360; theta += 10) { const rad = theta / 180 * Math.PI; position.push([r(rad) * Math.sin(rad), r(rad) * Math.cos(rad)]); }
10°刻みにしてあります。theta +=
の後ろをいじればさらに細かく刻めます。
実用例
拙作ライブラリUnitaryJSで表示するとこんな感じです。
終わりに
対数螺旋をアニメーションやデザインに応用するといい感じになりそうです。私も試しましたが、難しくて諦めました。デザインセンスが欲しいです。
実際に使うときはθがある程度小さくなったら別の曲線に入れ替えるなど工夫するといいかもしれません。