2次元線形を3次元にプロットする際、仰角をつけてプロットしたいです。
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
0 投票
以下に示す2次元線形を三次元にプロットし、仰角をつけて表示させたいです。
この場合、どのようにすれば平面の線形に仰角をつけられるでしょうか?
r2 = 30
r2 = 30
dot = (0:10:350);
[s,t] = meshgrid((dot/180)*pi, (dot/180)*pi)
s = 36x36
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
0 0.1745 0.3491 0.5236 0.6981 0.8727 1.0472 1.2217 1.3963 1.5708 1.7453 1.9199 2.0944 2.2689 2.4435 2.6180 2.7925 2.9671 3.1416 3.3161 3.4907 3.6652 3.8397 4.0143 4.1888 4.3633 4.5379 4.7124 4.8869 5.0615
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
t = 36x36
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745 0.1745
0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491 0.3491
0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236 0.5236
0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981 0.6981
0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727 0.8727
1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472 1.0472
1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217 1.2217
1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963 1.3963
1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708 1.5708
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
er2 = 3
er2 = 3
rr2 = r2 + sin(er2*(dot/180)*pi)
rr2 = 1x36
30.0000 30.5000 30.8660 31.0000 30.8660 30.5000 30.0000 29.5000 29.1340 29.0000 29.1340 29.5000 30.0000 30.5000 30.8660 31.0000 30.8660 30.5000 30.0000 29.5000 29.1340 29.0000 29.1340 29.5000 30.0000 30.5000 30.8660 31.0000 30.8660 30.5000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
xxr2 = rr2 .* cos((dot/180).*pi)
xxr2 = 1x36
30.0000 30.0366 29.0046 26.8468 23.6447 19.6050 15.0000 10.0896 5.0591 0.0000 -5.0591 -10.0896 -15.0000 -19.6050 -23.6447 -26.8468 -29.0046 -30.0366 -30.0000 -29.0518 -27.3770 -25.1147 -22.3179 -18.9622 -15.0000 -10.4316 -5.3598 -0.0000 5.3598 10.4316
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
yyr2 = rr2 .* sin((dot/180).*pi)
yyr2 = 1x36
0 5.2963 10.5568 15.5000 19.8403 23.3644 25.9808 27.7209 28.6914 29.0000 28.6914 27.7209 25.9808 23.3644 19.8403 15.5000 10.5568 5.2963 0.0000 -5.1226 -9.9644 -14.5000 -18.7270 -22.5983 -25.9808 -28.6606 -30.3971 -31.0000 -30.3971 -28.6606
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
plot(xxr2,yyr2)

採用された回答
Atsushi Ueno
2024 年 5 月 16 日
下記はY座標をZ座標に転記しただけですが、仰角と距離からZ座標を計算すれば狙い通りになるでしょう。
dot = (0:10:350) / 180 * pi;
xxr2 = (30 + sin(3*dot)) .* cos(dot);
yyr2 = (30 + sin(3*dot)) .* sin(dot);
plot3(xxr2,yyr2,yyr2);
view(45,45);
4 件のコメント
大智 山本
2024 年 5 月 17 日
回答ありがとうございます。追加の質問になりますが、任意の角度で仰角を与えプロットすることは可能でしょうか?可能であれば、例として20度の仰角をつけたい場合どのようなプログラムになるか教えていただけませんか?
Atsushi Ueno
2024 年 5 月 17 日
先の回答の様にY座標に沿って任意の角度で仰角を与えるには、Z座標をY座標×tan(theta)とします。
先の回答ではtan(45[deg])=1を掛けた事に、即ち45度の仰角が与えられた事になります。
dot = (0:10:350) / 180 * pi;
xxr2 = (30 + sin(3*dot)) .* cos(dot);
yyr2 = (30 + sin(3*dot)) .* sin(dot);
figure; view(3); hold on; grid on;
axis([-40 40 -40 40 -40 40]);
for theta = 0:20:180
plot3(xxr2,yyr2,yyr2*tan(pi*theta/180));
end

...と思いましたが、これではZ方向に無限に伸びる射影になってしまいます。
回転行列を掛けて座標を計算する必要がありますね。
交感神経優位なあかべぇ
2024 年 5 月 18 日
回転は、hgtransformを使用すると比較的簡単に表現できます。
dot = (0:10:350) / 180 * pi;
xxr2 = (30 + sin(3*dot)) .* cos(dot);
yyr2 = (30 + sin(3*dot)) .* sin(dot);
figure; view(3); hold on; grid on;
axis([-40 40 -40 40 -40 40]);
f = hgtransform('Matrix', makehgtform('yrotate', deg2rad(20))); %y軸を基準に20°回転
plot(f,xxr2,yyr2);

大智 山本
2024 年 5 月 20 日
回答ありがとうございました!
参考にさせていただきます!!
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で 極座標プロット についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)