MATLAB - 为极坐标系中两条曲线包围的区域着色

问题描述 投票:0回答:1

我是 Matlab 新手,我正在尝试编写一段代码,在极坐标系中绘制这两条曲线,并为它们所包围的区域着色。

r1 = 3 * sin(theta)

r2 = 1 + sin(theta)

我尝试了几种初步方法,但没有效果。

我正在使用Matlab R2022b

matlab polar-coordinates
1个回答
0
投票

您可能必须使用

pol2cart
从极坐标转换为笛卡尔坐标,这会打开更多标准绘图功能,例如
patch

输入示例:

theta = linspace(0,pi,2000);
r1 = 3 * sin(theta);
r2 = 1 + sin(theta);

绘制代码:

[x1,y1] = pol2cart( theta, r1 );
[x2,y2] = pol2cart( theta, r2 );
figure; hold on;
patch([x1 fliplr(x2)], [y1 fliplr(y2)], [0.7,0.9,0.9], 'displayname', 'fill', 'linestyle', 'none')
plot( x1, y1, 'r', 'linewidth', 2, 'displayname', 'r1' );
plot( x2, y2, 'b', 'linewidth', 2, 'displayname', 'r2' );
legend( 'show' );

请注意,如果您经过

pi
变为
theta
,那么线之间的区域的定义会有点模糊,但从这里开始,您拥有定义填充边界的所有坐标以及以不同方式计算它们的能力。

plot

© www.soinside.com 2019 - 2024. All rights reserved.