2次元線形を3次元にプロットする際、仰角をつけてプロットしたいです。
显示 更早的评论
以下に示す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度の仰角をつけたい場合どのようなプログラムになるか教えていただけませんか?
先の回答の様に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方向に無限に伸びる射影になってしまいます。
回転行列を掛けて座標を計算する必要がありますね。
回転は、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!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 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)