1

C++ を使用して磁力線を作成するプロジェクトを行っています。私は C++ の計算部分を扱ってきましたが (デザインやあまり凝ったものにはあまり関心がありません)、磁力線の作成に「離陸」するのに苦労しています。外積を含むものをモデル化する方法がわかりません

ローレンツ力 eqn: F = q(vx B)

フィールドに対して半径のステップを変化させるなどの可能な方法を調べましたが、フィールドが表示される角度を変化させる方法を見つける必要があると感じています。

シンプルな双極子磁石をモデル化したいだけです。C++ を使用してポイントを生成し、それらを txt ファイルとして保存し、gnu プロットを使用してプロットします。どんな助けでも大歓迎です。

4

2 に答える 2

0

GuyGreer が示唆するように、ソースから開始して、フィールドをたどってシンクに到達できます。磁力線はすべてのポイントでフィールドのベクトルに従います。したがって、理想的には、ポイントでのフィールドの方向だけでなく、フィールドの勾配も考慮する必要があります。そうしないと、正確なラインを取得するために、より多くのポイントが必要になります。

別の方法は、ソースからシンクまで直線を引き、その長さに沿って移動して、フィールド ベクトルがフィールド ラインと整列していることを確認することです。そうでない場合は、線を 2 つのセグメントに分割し、中心点を移動します。実際には、フィールド ラインを見つけるためにラインを移動し、さらに小刻みに揺れるライン セグメントを追加します。理想的には、スプラインまたはその他の曲線を使用します。

あなたは交差積について言及しています。ある点でフィールド ベクトルの値を 3D ベクトルとして取得できる場合、その別のベクトルとの外積は、外積の標準的な定義にすぎません。

// given vectors a and b with properties x, y and z representing the components
cross.x = a.y * b.z - a.z * b.y;
cross.y = a.z * b.x - a.x * b.z;
cross.z = a.x * b.y - a.y * b.z;
于 2012-04-10T21:17:27.100 に答える
0

私は次のように始めます:

作成したい磁力線ごとに、一方の極の近くの電荷 (電子など) から始めて、もう一方の極に到達するまで微分方程式の初期値系 (ルンゲクッタなど) を解きます。これが1行です。

別の開始点 (1 つの極の近く) を使用して繰り返します。

私が話している方程式の初期値システムは次のとおりです。

F = q( v x B )

d v / dt = (q/m) ( v x B )

うまくいけば、これは良いスタートです。(計算部分に精通しているとのことでしたので、RKメソッドの詳細には触れません。慣れていない場合は、非常に人気があるため、グーグルで検索するのに問題はないはずです)

于 2012-04-10T20:39:50.480 に答える