11

xy (2D) 座標の形で渦巻銀河を生成しようとしていますが、数学は得意ではありません。

スパイラルに関する優れた情報源から次の情報を収集しました。

半径 r(t) と角度 t は、最も単純な螺旋であるアルキメデスの螺旋に比例します。したがって、式は次のとおりです。

(3) 極方程式: r(t) = at [a は定数]。
これから
(2) パラメータ形式: x(t) = cos(t) で、y(t) = sin(t) で、
(1) 中央方程式: x²+y² = a²[arc tan (y/x) ]²。

この質問は銀河の生成に触れたようなものでしたが、答えは散らばっていて、私が必要としているものにはまだ複雑すぎました (別名、私の数学の愚かな心はそれらを理解できません)。

基本的に、私がする必要があるのは、513x513 XY グリッド上にポイントを生成するために、PHP でスパイラル式を ~5000 回ループすることです。グリッドのサイズと必要なポイントの数は、将来変更される可能性があります。銀河が実際にどのように見えるかと同様に、これらの点を周波数と正確な数式からどれだけ逸脱できるかの両方で、渦巻きの原点に向かって重み付けすることをお勧めします.

この数学論文は、渦巻銀河の構造を説明する式について語っています。

私を完全に失うのは、数式を PHP でループできるものに変換する方法です!

4

1 に答える 1

6
// a is 5 here
function x($t){ return 5 * $t * cos($t); }
function y($t){ return 5 * $t * sin($t); }

for ($t = 0; $t < 50; $t += 0.01) {
    $xyPoint = array(x($t), y($t));
    // draw it
}

このようなパラメトリック方程式に遭遇した場合、パラメータ変数がtであることが一般的です。これは時間を意味します。したがって、t の増加する値を関数に差し込んで、経過時間が増加するにつれて徐々に変化する座標を取得することを考えることができます。

a の値、t の範囲、および t の増分ステップ サイズを独自に選択する必要があります。それはあなたの要件に依存します。cos() と sin() の両方の最大値は 1 です。キャンバスのサイズに応じて a と t の適切な値を見つけるのに役立つ場合

于 2012-06-04T00:00:29.437 に答える