使用MatLab,我知道如何使用此代码创建连接两个点的行段:
line([0 1],[0 1])
这将绘制从点(0,0)到点(1,1)的直线段。
我要做的是继续将该线延伸到情节的边缘。我不想在这两点之间画一条线,而是想画一条到这两条点,它们跨越整个数字,任意两点。
对于这一特定的线和x = -10:10,y = -10:10的情节,我可以写:
line([-10 10], [-10 10]);
但我需要对任何一组点进行概括。
答案 0 :(得分: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);
有一个特殊情况,即垂直线,您必须单独处理。
答案 1 :(得分: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
?