2014-11-21 47 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