10

MatLab を使用して、次のコードを使用して 2 点を結ぶ線分を作成する方法を知っています。

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

これにより、点 (0,0) から点 (1,1) に直線セグメントが描画されます。

私がやろうとしているのは、その線をプロットの端まで続けることです。これらの 2 点間に線を引くだけでなく、任意の 2 点セットの図全体にまたがる 2 点を通る線を引きたいと思います。

この特定の行と ax=-10:10, y=-10:10 プロットについては、次のように書くことができます。

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

しかし、これを任意のポイントセットに対して一般化する必要があります。

4

2 に答える 2

11
  1. これらの 2 点を通る直線方程式を解きます。

    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);
    

1 つの特別なケース、縦線がありますが、これは個別に処理する必要があります。

于 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 に答える