このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
球面座標から直交座標への変換および解析的なプロット
この例では、シンボリック式を球面座標から直交座標に変換し、数値データを明示的に生成せずに、変換された式を解析的にプロットする方法を示します。
球面座標系では、点 の位置を 3 つの変数で特徴付けることができます。球面座標を記述するために使用される変数の規則は教科書によって異なります。これらの例では、次の規則を使用します。
半径距離
方位角
極角
点 の球面座標 から直交座標 への変換は次の式で与えられます。
シンボリック式を球面座標から直交座標に変換すると、fplot3
やfsurf
などの Symbolic Math Toolbox™ グラフィックス関数を使用して式をプロットできます。
点とその投影のプロット
にある点 をプロットします。
球面座標を直交座標 に変換します。変換された座標には数値が含まれるため、plot3
を使用して点をプロットします。
rho = 1; theta = 1.2; phi = 0.75; x_P = rho*sin(phi)*cos(theta); y_P = rho*sin(phi)*sin(theta); z_P = rho*cos(phi); plot3(x_P,y_P,z_P,'ko','MarkerSize',10,'MarkerFaceColor','k') hold on
プロットの各軸にラベルを付け、視線を変更し、等しいデータ単位を使用するように軸のスケーリングを設定します。
xlabel('x') ylabel('y') zlabel('z') view([75 40]) axis equal;
次に、点 の原点への直線投影をプロットします。球面座標において、この直線投影は によってパラメーター化されます。 の範囲は ~ になります。この行のパラメーター表現をシンボリック式として指定し、fplot3
を使用してプロットします。
syms r xr = r*sin(phi)*cos(theta); yr = r*sin(phi)*sin(theta); zr = r*cos(phi); fplot3(xr,yr,zr,[0 rho],'k')
平面への垂直線投影をプロットします。直交座標において、この直線投影は によってパラメーター化されます。 の範囲は ~ になります。
syms z fplot3(sym(x_P),sym(y_P),z,[0 z_P],'k')
上端の水平線投影を 軸にプロットします。直交座標において、この直線投影は によってパラメーター化されます。 の範囲は ~ になります。
fplot3(xr,yr,sym(z_P),[0 rho],'k--')
下端の水平線投影を 軸にプロットします。直交座標において、この直線投影は によってパラメーター化されます。 の範囲は ~ になります。
fplot3(xr,yr,sym(0),[0 rho],'k')
次に、座標 での 平面に、方位角 の範囲を示す平面をプロットします。
syms s t x_azimuthal = s*sin(phi)*cos(t); y_azimuthal = s*sin(phi)*sin(t); fsurf(x_azimuthal,y_azimuthal,0,[0 rho 0 theta],'FaceColor','b','EdgeColor','none')
極角 の範囲を示す平面をプロットします。
syms u v x_polar = u*sin(v)*cos(theta); y_polar = u*sin(v)*sin(theta); z_polar = u*cos(v); fsurf(x_polar,y_polar,z_polar,[0 rho 0 phi],'FaceColor','g','EdgeColor','none') hold off
球体のプロット
半径 で球体をプロットします。
球面座標において、この球体は によってパラメーター化されます。 の範囲は ~ 、 の範囲は ~ になります。表面のパラメーター表現をシンボリック式として指定して、球面座標を直交座標に変換します。次に、fsurf
を使用して球体をプロットします。
syms phi theta r = 4; x = r*sin(phi)*cos(theta); y = r*sin(phi)*sin(theta); z = r*cos(phi); fsurf(x,y,z,[0 pi 0 2*pi]) axis equal
半球のプロット
半径 で半球をプロットします。
球面座標において、この球体は によってパラメーター化されます。 の範囲は ~ 、 の範囲は ~ になります。表面のパラメーター表現をシンボリック式として指定して、球面座標を直交座標に変換します。次に、fsurf
を使用して半球をプロットします。
syms phi theta r = 4; x = r*sin(phi)*cos(theta); y = r*sin(phi)*sin(theta); z = r*cos(phi); fsurf(x,y,z,[0 pi/2 0 2*pi]) axis equal
パラメーター化された表面のプロット
球面座標における半径距離が方位角と極角に関連する、パラメーター化された表面をプロットします。
表面は半径座標 をもちます。 の範囲は ~ 、 の範囲は ~ になります。表面のパラメーター表現をシンボリック式として指定して、球面座標を直交座標に変換します。次に、fsurf
を使用してパラメーター化された表面をプロットします。
syms phi theta rho = 2 + sin(5*phi + 7*theta); x = rho*sin(phi)*cos(theta); y = rho*sin(phi)*sin(theta); z = rho*cos(phi); fsurf(x,y,z,[0 pi 0 2*pi]) view(45,50)