2014-11-21 104 views
-4

我有这个方程r=z*cos(theta),我需要在Matlab中以直角坐标绘制它。我怎样才能做到这一点?如何绘制笛卡尔坐标方程

+3

1)告诉 '这是非常紧迫的' 在你的问题不会让人想把他们所做的一切事情都放在一边,帮助你解决问题。 2)这是一个'让我为你提供Google的问题'的问题,即谷歌搜索会以比编写问题所用的时间更少的时间告诉你你的答案。 3)看看这个链接,它给出了答案:http://www.geom.uiuc.edu/docs/reference/CRC-formulas/node42.html – 2014-11-21 15:41:24

回答

2

首先,你的圆柱坐标的定义是错误的。鉴于围绕ztheta以及气缸r,气缸内的笛卡尔坐标的半径的方位角扫描被定义为:

x = r*cos(theta) 
y = r*sin(theta) 
z = z 

因此,需要定义共同的网格对于r,thetaz,请使用这些坐标并将它们插入上面的代码,然后绘制它们。我建议你使用plot3作为你想在笛卡尔空间绘制3D点。另外,使用meshgrid来定义你的网格点。

因此,当您绘制圆柱体的半径(通常)是恒定的,并且thetaz是您变化的数量。我们假设-2 <= z <= 2r = 2。我们知道要创建一个圆柱体,我们必须从0 <= theta <= 2*pi开始扫描一个圆圈。因此,做这样的事情:

%// Define (r,theta,z) 
[theta, z] = meshgrid(0:0.001:2*pi, -2:0.001:2); 
r = 2*ones(size(theta)); 

%// Calculate x and y. z was calculated earlier 
x = r.*cos(theta); 
y = r.*sin(theta); 

%// Plot the points 
plot3(x(:), y(:), z(:), 'b.'); 
grid; 
view(-48,60); %// Adjust viewing angle 

这就是我得到:

enter image description here


您当然可以使用更有效的技术,像什么Kamtal已与pol2cart建议,但你说你想要实际的笛卡尔坐标,所以x,yz包含在3D空间中的这些坐标给你。我假设你想要这些进一步处理。

祝你好运!

1
n = linspace(-pi,pi,20); 
m = linspace(0,1,20); 
[theta,z] = meshgrid(n,m); 
r = z .* cos(theta); 
[X,Y,Z] = pol2cart(theta,r,z); 
surf(X,Y,Z) 
axis equal 

enter image description here

如果将其更改为r = 1 .* cos(theta);那么你会得到一个圆柱体,

enter image description here

相关问题