2014-12-02 58 views
1

我試圖獲得各種角度(theta在圖片上的藍色)以及線的長度(紅點從零終點)以下使用matlab/octave獲得螺旋點上的線長度以及點的長度

見PIC請注意我試圖獲得的不僅僅是一個角度不僅僅是一個長度越來越從零開始,我打算做一個功能,我會得到如果我放入一個給定的角度或給定的長度,線的角度或長度。

Spiral

我試圖重新使用以上參數表格圖片,我這個網站是繼從 說明http://www.intmath.com/blog/golden-spiral/6512?PageSpeed=noscript 但它似乎並沒有被工作了。 主要目標是獲得各種角度以及來自零的線長度

代碼的情節我沿着低於

clear all, clc, clf 
%find how many angles to make one full cycleremeber to divide by two if using stereo signal 180 out of phase 
incr=20; 
angle_wanted=incr; 

n = lcm(360, 180 - angle_wanted)/(180 - angle_wanted) 
angle_div=[0:incr:incr*n] %angle divsions 
angle_div_mod=mod(angle_div,360) %angle divsions mod into 360 
angle_div_mod_opp=mod(angle_div+180,360) %oppsite angle divsions mod into 360 

%for circles 
r= 2.2; 
for rho = 0:0.1:2 
    [x1,y1] = pol2cart( 0:0.01:2*pi , rho); 
    plot(x1,y1,'b') 
    axis(1.10*[-r r -r r]) 
    axis equal 
    hold on; 
end 

%for orig angles 

for ii=1:n 
    angle=angle_div(ii) 
    [x1,y1] = pol2cart( angle/180 * pi , [0 2]); 
    plot(x1,y1,'r') 
    hold on; 
    title_h=title(['Norig= ', int2str(ii)]); 
    %title_h = title('This is the title'); 
    set(title_h, 'Position', [0.5, 0.02],'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'left') 
    %%for creating orig angles 
    idx=angle_div_mod(ii); 
    text(r*cos(pi*idx/180),r*sin(pi*idx/180),num2str(idx), 'HorizontalAlignment','center', 'color',[1 .5 0]) 
    pause (.1) 
end 

%for oppsite angles 
for ii=1:n 
    angle_opp=angle_div_mod_opp(ii) 
    [x1,y1] = pol2cart( angle_opp/ 180 * pi , [0 2]); 
    plot(x1,y1,'g') 
    hold on; 
    title(['Nopp= ', int2str(ii)]); 
    %for creating oppsite angles 
    idx=angle_div_mod_opp(ii); 
    text(r*cos(pi*idx/180),r*sin(pi*idx/180),num2str(idx), 'HorizontalAlignment','center', 'color',[.5 .7 .7]) 
    pause (.1) 
end 

t = linspace(0,5*pi,1000); 
r=e^0.30635*t; 
x = r.*cos(t); 
y = r.*sin(t); 
plot(x,y) 

plot

+0

你想要什麼?在該網站上製作圖片? – Rashid 2014-12-02 16:09:58

+0

@Kamtal是的圖片以及獲得各種角度(theta)以及從零作爲輸出使用函數的長度。 – 2014-12-02 16:14:39

+0

@Kamtal我在我的代碼中使用了pol2cart三次....最後一張圖片是pol2cart生成的圖片 – 2014-12-02 16:16:28

回答

1
r = @(t) exp(.306349*t); 
h = plot(0,0,'Color','b','LineWidth',2); 
h = handle(h); 
axis(50*[-1 1 -1 1]); 
grid on 
n = 1; 
for t = 0 : .1 : 5*pi 
    x(n) = r(t) .* cos(t); 
    y(n) = r(t) .* sin(t); 
    h.XData(n) = x(n); 
    h.YData(n) = y(n); 
    n = n + 1; 
end 

與使用patch你會得到,

enter image description here

[r(t),t]的長度和角度。

+0

@RickT我無法理解你爲什麼不能通過'cart2pol'獲得長度和角度。請留言,如果我失去了一些東西。 – Rashid 2014-12-02 17:00:47

0

我會用ezpolar的繪圖,因爲它是非常容易積象徵功能的方式。一些代碼來讓你開始:

% function parameters 
a = 1; 
b = 1; 
syms theta 
rho = a*exp(theta*cot(b)); 


version = input('find length (1) or angle (0)?'); 

if version == 1 
    theta = input('give the angle in radians'); 
    ezpolar(rho,[0,theta*pi]); 
    linelength = eval(rho) 
end 

if version == 0 
    linelength = input('give the line length'); 
    angle = eval(solve(rho==linelength)) 
    ezpolar(rho,[0,angle*pi]); 
end 

請注意,這並不繪製藍線本身,但它不應該太難繪製此起執行。螺旋線擬定到您正在嘗試計算的點。