2013-04-09 139 views
0

我已經繪製在Matlab一條線,我想找出所在的座標我的線穿過邊緣:如何在matlab中查找一條直線的邊緣點?

enter image description here

任何建議或意見? =)My功能XY-限制是-1到1。這是我的代碼到目前爲止:

yp = -1 + (1-(-1)).*rand(1,2); 
xp = -1 + (1-(-1)).*rand(1,2); 
a = (yp(2)-yp(1))/(xp(2)-xp(1)); 
b = yp(1)-a*xp(1); 
xlim([-1 1]) 
ylim([-1 1]) 
xlims = xlim(gca); 
ylims = ylim(gca); 
y = xlims*a+b; 
line(xlims, y); 

回答

3

我想我解決了它自己=)如果有人碰到這個問題,以下是我修改了代碼:

yp = -1 + (1-(-1)).*rand(1,2); 
xp = -1 + (1-(-1)).*rand(1,2); 
a = (yp(2)-yp(1))/(xp(2)-xp(1)); 
b = yp(1)-a*xp(1); 
xlim([-1 1]) 
ylim([-1 1]) 
x = xlim(gca); 
y = x*a+b; 

for i = 1:numel(y) 
    if y(i) < -1 
     y(i) = -1; 
     x(i) = (-b-1)/a; 
    elseif y(i) > 1 
     y(i) = 1; 
     x(i) = (1-b)/a; 
    end 
end 

line(x, y); 

這似乎爲我工作,我可以解決「綠色圓點「在Gunthers圖片=)

3
  1. 查找該線的方程,即:y=a*x+b
  2. 使用下部/上部求解對於x y-極限,如果得到的x在x極限內,則這是邊緣點(s)。
  3. 使用左/右x極限求解y,如果結果y在y極限內,則這是邊緣點(s)。
  4. 完成

所以基本上限制範圍內所得到的點是在TE以下畫面中的綠色的點,這些限制以外所得點是紅色的。

enter image description here

+0

謝謝你的回答=)在一般情況下呢?例如,如果生成的x不在x限制內? =) – jjepsuomi 2013-04-09 06:43:07

+1

基本上我的anwser告訴你找到你的交點是與邊線相交的。因此,當結果x超出x極限時,這意味着您的線與上/下邊緣的交點位於框外,因此它不是邊緣點。 – 2013-04-09 06:57:43

+0

再次感謝您=)好的,但是我怎麼能找到我在圖像中圈出的座標? =)在這種情況下,這些值在框外,但我有興趣知道它們在圖像邊界上的位置=)希望我不清楚; D – jjepsuomi 2013-04-09 07:05:29