0

我在 Matlab 中绘制了一条线,我想找出我的线穿过边缘的坐标:

在此处输入图像描述

有什么建议或意见吗?=) 我的函数 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 );
4

2 回答 2

3
  1. 求直线的方程,即:y=a*x+b
  2. 使用下/上 y 限制求解 x,如果结果 x 在 x 限制内,则这是边缘点。
  3. 使用左/右 x 限制求解 y,如果得到的 y 在 y 限制内,则这是边缘点。
  4. 完毕

所以基本上限制内的结果点是下图中的绿点,限制外的结果点是红色点。

在此处输入图像描述

于 2013-04-09T06:40:17.730 回答
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 图片中的“绿点”=)

于 2013-04-09T07:32:22.763 回答