10

使用 MatLab,我知道如何使用以下代码创建连接两点的线段:

line([0 1],[0 1])

这将绘制从点 (0,0) 到点 (1,1) 的直线段。

我想要做的是继续这条线到情节的边缘。而不是仅仅在这两个点之间画一条线,我想画一条穿过这两个点的线,跨越整个图形的任何两个点。

对于这条特定的线和 ax=-10:10, y=-10:10 情节我可以写:

line([-10 10], [-10 10]);

但我需要对任何一组点进行概括。

4

2 回答 2

11
  1. 求解通过这两点的直线方程:

    y = a*x + b;
    

    对于ab

    a = (yp(2)-yp(1)) / (xp(2)-xp(1));
    b = yp(1)-a*xp(1);
    
  2. 找到绘图窗口的边缘

    xlims = xlim(gca);
    ylims = ylim(gca);
    

    或远离边缘,因此您仍然可以缩小,稍后重置 x/y 限制。
    或者如果目前没有情节,请定义您想要的边缘:

    xlims = [-10 10];
    ylims = [-10 10];
    
  3. 将这些边填入直线方程并绘制相应的点:

    y = xlims*a+b;
    line( xlims, y );
    
  4. 并重置边缘

    xlim(xlims);
    ylim(ylims);
    

有一种特殊情况,即垂直线,您必须单独处理。

于 2012-10-30T16:47:21.460 回答
6

关于什么

  function = long_line(X,Y,sym_len)
       dir = (Y-X)/norm(Y-X);
       Yp = X + dir*sym_len;
       Xp = X - dir*sym_len;
       line(Xp,Yp);
  end

sym_len周围绘制线的预期长度的一半X

于 2012-10-30T16:46:18.093 回答