球面座標データをXYZに変換し3Dグラフを作成

サマリー

このチュートリアルでは、球面座標データの3Dグラフの作成に関わる操作と、Xファンクションsph2cart を使用して球面座標から直交座標のワークブックや行列に変換する方法を紹介します。

sph2cartの変換アルゴリズムを確認すると、Originは変換式の中で、仰角として\phiを使用し、方位角として\thetaを使用することがわかります。


x = r \ast cos\left ( \phi  \right ) \ast cos \left ( \theta  \right );


y = r \ast cos\left ( \phi  \right ) \ast sin \left ( \theta  \right );


z = r \ast sin\left ( \phi  \right );

学習する項目

  • 球面座標のワークシート(仮想行列)データを直交座標に変換して3D曲面図を作成
  • 球面座標の行列オブジェクトを直交座標に変換して3D曲面図を作成
  • 球面座標の3つの行列オブジェクトを直交座標に変換して個別の3D曲面図を作成
  • 球面座標のワークシート(XYZ)データを直交座標(XYZ)に変換して3D空間に曲線を作成

ステップ

仮想行列のデータで3Dカラーマップ曲面図を作図

Originは、仮想行列(特別な座標形式)内のデータで曲面グラフを作図でき、カラーマップを追加できます。以下の操作で、カラーマップ曲面の楕円体を作図します。

このチュートリアルは、チュートリアルデータプロジェクト(<Origin EXE フォルダ>\Samples\TutorialData.opj)と関連しています。

  1. Tutorial Data.opjを選択し、フォルダSpherical Coordinatesを開きます。
  2. チュートリアルデータ内の仮想行列データspheriPlot を開くと、下図のような構造になっていることが確認できます。
    MatrixStruc.png
    このサンプルでは、方位角\thetaの範囲は0から360で、仰角\phi の範囲は-90から90です。 角度の単位には度を使用します。
  3. スクリプトウィンドウを開き、以下のコードを入力して実行します。
    sph2cart -d;
    sph2cartダイアログで下図のように設定して、OKをクリックします。XYZに対応する、3つの新しい行列オブジェクトが作成されます。
    Virtualplot1.png
  4. 行列レイヤ内の行列Zの後に、カラーマップデータ用の行列オブジェクト「4」を追加します。
    Virtualplot2.png
  5. Spherical Coordinatesフォルダのcolormap 行列のデータをコピーし、新しく追加した行列オブジェクトに貼り付けます。
    Virtualplot3.png
  6. 行列データから3D曲面図を作成します。行列オブジェクトZをアクティブにして、次のようにメニューを選択します。作図:3D:3Dカラーマップ曲面をクリックします。
    プロット上でダブルクリックして、作図の詳細ダイアログを開きます。面タブのパラメトリック曲面を下図のように設定して、OKボタンをクリックします。
    Virtualplot4.png
  7. CTRL+R を押して軸を再スケールし、軸上でダブルクリックしてダイアログを開きます。XYZ軸のスケールをすべて-1.2 から1.2に設定してOKボタンをクリックします。
    Virtualplot4-1.png
    グラフは下図のようになります。
    Virtualplot3.png
  8. 楕円体にカラーマップを適用します。曲面上でダブルクリックして作図の詳細ダイアログを開き、塗りつぶしタブを開いて行列から等高線を塗りつぶすをMat(4)に変更します。
    Virtualplot4-3.png
  9. カラーマップ/等高線タブでは、ヘッダをクリックして、レベルの設定塗り方等高線ダイアログを開くことができます。最小/最大の検索ボタンをクリックしてレベルを設定し、OKボタンをクリックして適用します。塗り方の「パレットをロード」で「Maple」を選択します。等高線ダイアログでは「全て隠す」を選択してOKをクリックし、適用をクリックして設定を適用します。
    Virtualplot4-4.png
    メッシュタブを開き、有効にするのチェックを外してメッシュ線を無効にし、OKをクリックしてダイアログを閉じます。
  10. 最終的なグラフは下図のようになります。
    Virtualplot5.png

方位角と仰角は、(r,\theta,\varphi )空間に偏在できます。

行列オブジェクトのデータを変換して3D曲面図を作図

  1. Originは球面座標のR(\theta ,\varphi )曲面関数を構成することができます。方位角、仰角、半径は同じ行列に配置されます。球面座標の方程式から行列値を設定する前に、sph2cartで変換関係とシステム内での方位角、仰角の定義を確認できます。
  2. 新しい行列を作成します。メインメニューから行列:次数/ラベルの設定を選択します。次数を100\times 100にし、Xのマッピングを(0,2\pi )、Yのマッピングを(-\frac{\pi}{2},\frac{\pi}{2})に設定します。XとYは角度データで、Xは列を横断する方位角、Yは仰角です。
    このサンプルでは、方位角\thetaの範囲は0から2\piで、仰角\phi の範囲は-\frac{\pi }{2}から-\frac{\pi }{2}です。 角度の単位にはラジアンを使用します。
    Set Dimension and Labels.png
  3. メニューから「行列:セル値の設定」を選びます。値の設定ダイアログに以下の式を入力します。
    abs(sqrt(0.5)*0.25*(15/pi)^0.5*sin(pi/2-y)*sin(pi/2-y)*(sin(2*x)-cos(2*x)))
    球面調和関数を使用して行列値を設定し(Y_l^{m} は、球面調和関数の特定のセット)、Y_l^{m}の線形結合は、水素原子のd軌道 (例 d_{xy})に相当します。
    \left | d_{xy} \right |=\left | \sqrt{1/2}(Y_2^{-2}-Y_2^{2}) \right |\; \; (1)
    関数(1)のY_2^{2}Y_2^{-2}
    Y_2^{2}=\frac{1}{4}\sqrt{\frac{15}{\pi}}sin^2(\frac{\pi}{2}-\varphi )cos(2\theta )
    Y_2^{-2}=\frac{1}{4}\sqrt{\frac{15}{\pi}}sin^2(\frac{\pi}{2}-\varphi )sin(2\theta )
    Set values.png
  4. 球面座標の行列は、Xファンクションsph2cartを使用して直交座標に変換できます。ウィンドウ:スクリプトウィンドウを選択して以下のスクリプトを入力し、Enterキーを押して実行します。
    sph2cart -d
    sp2cart ダイアログで下図のように設定し、単一行列オブジェクトを入力データとします。
    Sph2cart.png
    OKをクリックすると、新しい行列シート(MSheet2)に結果が出力します。
  5. 行列データから3D曲面図を作図します。MSheet2 の行列オブジェクトZをアクティブにします。
    MatrixObj.png
    メインメニューから作図:3D:3Dカラーマップ曲面を選択します。
  6. 曲面上でダブルクリックして、作図の詳細ダイアログを開き、下図のようにパラメトリック曲面を設定し、OKボタンをクリックします。
    Virtualplot4.png
  7. CTRL+R を押して軸を再スケールし、軸上でダブルクリックしてダイアログを開きます。XYZ軸のスケールをすべて-0.5から0.5に設定し、主目盛を0.2にしてOKボタンをクリックします。
    Axis.png
  8. グラフは下図のようになります。
    Plotm-1.png
  9. 曲面図をダブルクリックして、作図の詳細ダイアログを開きます。カラーマップ/等高線タブを開き、レベル/色塗り/線のヘッダをクリックして、それぞれのダイアログで下図のように設定を行います。
    Colormap1.png
    メッシュタブを開き、透明度自動のチェックを外して値を70%に変更します。
    Transparent.png
    カラーマップの設定については、パラメトリック曲面のチュートリアルを確認してください。下図が最終的なグラフです。
    Funplot2.png

3つの行列オブジェクトのデータを変換して3D曲面図を作図

Originは球面座標のR(\theta ,\varphi )曲面関数を構成することができます。方位角、仰角、半径は異なる行列に配置されます。以下のステップでは、3つの行列を使用して複数曲面図を作成する方法と、sph2cartを使用してXYZに変換する方法を紹介します。

  1. 新しい行列を作成します。行列次数/ラベルの設定ダイアログで、行列の次数を98\times 33に設定し、OKをクリックします。
  2. 行列ウィンドウの右上にあるDボタンをクリックし、メニューから追加を選択して行列ブックに2つのオブジェクトを追加します。
    Addmatrix.png
  3. 最初の行列オブジェクトに方位角を入力します。1番目の行列オブジェクトをアクティブにし(Dボタンをクリックして1/2/3を選択し切り替え)、メニューから行列:セル値の設定をクリックします。方位角の行列値は以下のように設定します。
    Datarange.png
  4. 値の設定ダイアログで、下の式を入力します。
    (j==33||j==66)?1/0:(pi/32*j*(j<33)+pi/32*(j-33)*(j>33&&j<66)+pi/32*(j-66)*(j>66))
    Set Values2.png
    0から2\piまで3回ループし、Column (33)とColumn (66)は欠損値になります。
  5. 仰角は2番目の行列オブジェクトにに入力します(操作2の方法で行列オブジェクト2を選択します)。次の式を使用して仰角の値を設定します。
    pi/32*(i-17)
  6. 3番目の行列オブジェクトに、次式により半径を入力します。
    Col(i,j)=\begin{cases}
1 & \text{ if } i\in [1,32] \\ 
0.7 & \text{ if } i\in [33,65] \\ 
0.4& \text{ if } i\in [66,98] \\
\end{cases}
    半径値の設定は区分的なので、操作3、4、5を参照し、次のコードを使用します。
    1*(j<33)+0.7*(j>33&&j<66)+0.4*(j>66)
  7. 3つの行列で値を設定後、sph2cartを使用してデータをXYZに変換できます。スクリプトウィンドウを開き、以下のコードを入力して実行します。
    sph2cart -d;
    sph2cartダイアログで下図のように設定して、OKをクリックします。3つの行列に対するXYZデータが出力されます。
    Sph2cart2.png
  8. 新しい行列レイヤに作成されたXYZ行列オブジェクトを使用して3D曲面図を作成します。その際の操作は、上述のセクション行列オブジェクトのデータを変換して3D曲面図を作図と同様です。
    最終的なグラフは下図のようになります。
    Funplot4.png

3列のデータを変換して3D空間に曲線を作図

Originでは、不等間隔なXYZ列データ(球面座標)で3Dの曲線を作成できます。以下の操作で、球の形状のらせんを作図します。

  1. 3つの列X、Y、Zを持つ新しいワークブックを作成します。Xの値として-\frac{\pi }{100}から20\piまでの値をセットするために、列を右クリックして、メニューから列値の一律設定:数値のセットを選択します。
    SetXvalue.png
    列値の設定でY列の値を以下のように設定します。
    SetYvalue.png
    列値の設定でZ列の値を定数4に設定します。
    このサンプルでは、Xが方位角、Yが仰角、Zが半径に相当します。
  2. スクリプトウィンドウを開き、以下のコードを入力して実行します。
    sph2cart -d;
    sph2cartダイアログで下図のように設定して、OKをクリックします。XYZに対し新しい3列のデータが出力されます。
    Sphline.png
  3. 出力されたXYZデータを選択して、メニューから作図:3D:3D散布図を選択して作図します。シンボルサイズを0に設定し、シンボルを線で接続し、OKをクリックします。
    Symline.png
  4. スケールや遠近法等を調節すると、最終的なグラフは以下のようになります。
    Sphline2.png


新しく作成されたXYZデータのXYZ列を選択し、作図:3D:3Dカラーマップ曲面から3D曲面図を作図することもできます。

XとYの方位角、仰角は、(r,\theta,\varphi )空間に等間隔あるいは不等間隔に存在できます。