2013-10-08 23 views
0

我想在線性線通過圓心(x,y)時找到兩個(2)交點。MATLAB:找到與「solve」的交點[circle + linear equation]

r = 13 radius 
x = 0 x-coordinate 
y = 7 y-coordinate 
k = 9 slope value(?) y=kx+m y=9x+m 

所以首先我畫了一個r = 13的圓和一個(0,7)的椎體。

r=13 
x=0 
y=7 
k=9 

hold on 
z = 0:pi/50:2*pi; 
xunit = r * cos(z) + x; 
yunit = r * sin(z) + y; 
plot(xunit, yunit); 

我想知道是否可以以更簡單的方式繪製一個圓圈?喜歡的東西

(x−cx)^2 + (y −cy)^2 = r^2 
(x-0)^2 + (y-7) = 13^2 

我已經試過這

plot((x−cx)^2 + (y −cy)^2 = r^2) 

它沒有做任何事情,因此代碼必須是不正確的。

好吧,那麼我通過計算

y=kx+m 
k=9 

行雲thorugh(0,7)

7=9*0+m 
m=7 
y=9x+7 

這樣,因爲我是新MATLAB的,我花了繪製線性方程一段時間才能真正畫出線條。我沒有找到任何簡單的函數來繪製它,所以我畫了這樣一條線:

我爲x或y取了一些隨機值並計算了一些座標。

(0,7) 
(2,25) 
(-2,-11) 

plot([-2,2],[-11,25]) 

結果圖像:http://i.imgur.com/ag6HJlm.jpg

所以現在我只需要「解決」的功能,解決了交叉點。所以我很感激一些幫助!

問候

+0

爲什麼要用解決?爲什麼不分析解決它? – Dan

+0

您可以使用映射工具箱嗎?如果是的話,請使用linecirc() – lhcgeneva

+0

但它是一個學校的任務,我「必須」使用解決功能... lhcgeneva你能詳細解釋一下嗎?我應該怎麼做linecirc(),所以我可以用solve()解決它? [xout,yout] = linecirc(9,intercpt,0,7,13) – user2857820

回答

0

這裏有一個方法是:

%Place your lines and figures on the grid 
linexypos = eye(100); 
shapexypos = flipud(eye(100)) ; 

% Guess where they come together 
intersection = filter2(ones(3),linexypos + shapexypos); 
[quality, loc] = max(intersection(:)) 

請注意,你必須猜測,兩行用1個像素的寬度可能沒有完全一樣的位置。 (考慮[1 0; 0 1][0 1;1 0],它們交叉但從未完全重疊)。

如果你想以可視化的情況下,儘量contour(intersection)