読者です 読者をやめる 読者になる 読者になる

Panda Noir

JavaScript の限界を究めるブログです。

プログラムで 対数螺旋を書く方法

対数螺旋という螺旋を書く方法を理解したので書きます。

対数螺旋とは

wikiによると「極座標表示 (r, θ) でr=aebθと表される平面曲線」だそうです。極座標とかなに?という私のような人のために対数螺旋を描く前に軽く説明しておきましょう。

この式のr、e、θはそれぞれ円の半径、自然対数の底、角度を表します。自然対数の底について知らない人は2.71828...という円周率のような定数だとだけ覚えておいてください。深い話は今回は関係ないのでしません。

そして、次に極座標についてです。極座標というのは直交座標のように座標の表し方の一種です。

どういう座標かというと、ある点の座標を表すのに円の半径と角度を使います。原点中心とした半径rの円の上に点があるとして、そのときに原点とその点を通る直線とx軸とのなす角をθとします。

こうすることで原点を除く点は全てrとθで表せます。これが極座標です。…ちょっとわかりづらいですかね。

つまりこういうこと

つまり、x軸y軸をとり、x軸を原点中心として少しずつ回していきます。θだけ回したとき、x軸上のrの点に次々点を打っていきます。これで完成です。

プログラムにしてみる

プログラムでまとめると、こうなります。いつもどおり言語はJavaScriptです。

var r = function(theta) {
    var a = 1, b = 1;//ここは適当です。
    return a * Math.pow(Math.E, b * theta);
}
for (var theta = 0; theta < 360; theta += 10) {
    var rad = theta / 180 * Math.PI;
    console.log(r(rad) * Math.sin(rad),r(rad) * Math.cos(rad));
}

終わりに

デザインに応用するといい感じになりそうです。私も試しましたが、難しくて諦めました。デザインセンスが欲しいです。

実際に使うときはθがある程度小さくなったら別の曲線に入れ替えるなど工夫するといいかもしれません。