使用 MatLab,我知道如何使用以下代码创建连接两点的线段:
line([0 1],[0 1])
这将绘制从点 (0,0) 到点 (1,1) 的直线段。
我想要做的是继续这条线到情节的边缘。而不是仅仅在这两个点之间画一条线,我想画一条穿过这两个点的线,跨越整个图形的任何两个点。
对于这条特定的线和 ax=-10:10, y=-10:10 情节我可以写:
line([-10 10], [-10 10]);
但我需要对任何一组点进行概括。
求解通过这两点的直线方程:
y = a*x + b;
对于a
和b
:
a = (yp(2)-yp(1)) / (xp(2)-xp(1));
b = yp(1)-a*xp(1);
找到绘图窗口的边缘
xlims = xlim(gca);
ylims = ylim(gca);
或远离边缘,因此您仍然可以缩小,稍后重置 x/y 限制。
或者如果目前没有情节,请定义您想要的边缘:
xlims = [-10 10];
ylims = [-10 10];
将这些边填入直线方程并绘制相应的点:
y = xlims*a+b;
line( xlims, y );
并重置边缘
xlim(xlims);
ylim(ylims);
有一种特殊情况,即垂直线,您必须单独处理。
关于什么
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
?