実現したいこと
MATLABを用いて球面を描く際に、方位角、極角の定義の仕方についての疑問点を解決したい。
発生している問題・分からないこと
球面の作成において、方位角と極角を2通りの定義を試した。
①方位角0~2π, 極角0~π/3
②方位角0~π, 極角-π/3~π/3
①、②は数学的に差異はないと考えていたが、MATLABのsurf関数を用いて表示したところ、違いがみられた。差異が発生した理由と②の定義で①と同様の出力になる方法を知りたい。
該当のソースコード
MATLAB
1% パラメーター設定 2r = 1; % 半径 3theta_div = pi/10; % 分割サイズ(方位角) 4phi_div = (pi/3)/10; % 分割サイズ(極角) 5theta = 0:theta_div:2*pi; % 方位角の範囲 6phi = 0:phi_div:pi/3; % 極角の範囲 7theta2 = 0:theta_div:pi; % 方位角の範囲 8phi2 = -pi/3:phi_div:pi/3; % 極角の範囲 9 10% 極座標から直交座標への変換① 11[THETA, PHI] = meshgrid(theta, phi); 12x = r * sin(PHI) .* cos(THETA); 13y = r * sin(PHI) .* sin(THETA); 14z = r * cos(PHI); 15 16% 描画① 17figure('Name', 'Figure 1') 18surf(x, y, z); 19axis equal; 20xlim([-1,1]); 21ylim([-1,1]); 22zlim([-1,1]); 23 24xlabel('X軸'); 25ylabel('Y軸'); 26zlabel('Z軸'); 27title('球面の描画'); 28 29% 極座標から直交座標への変換② 30[THETA2, PHI2] = meshgrid(theta2, phi2); 31x2 = r * sin(PHI2) .* cos(THETA2); 32y2 = r * sin(PHI2) .* sin(THETA2); 33z2 = r * cos(PHI2); 34 35% 描画② 36figure('Name', 'Figure 2') 37surf(x2, y2, z2); 38axis equal; 39xlim([-1,1]); 40ylim([-1,1]); 41zlim([-1,1]); 42 43xlabel('X軸'); 44ylabel('Y軸'); 45zlabel('Z軸'); 46title('球面の描画'); 47
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
極角の分割サイズについて、0を基準に正負の値が対称となるように設定した。これにより-π/3~π/3の範囲でカラーマップは原点対称となると考えたが、実際にはそうならなかった。
補足
MATLAB初心者です。ご教授いただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/05/21 00:15