在gnuplot中绘制两个点的垂直平分线

时间:2016-11-29 12:50:10

标签: graph gnuplot draw bisection

说,我在同一条线上有两个点(x1,y1)和(x2,y2)。连接这两个点的中点是(x,y)。是否有可能在gnuplot中通过(x,y)绘制垂直平分线?我该如何画出来?

2 个答案:

答案 0 :(得分:0)

您的行的等式是

y=ax+b
a=(y2-y1)/(x2-x1)
b=(x2*y1-y2*x1)/(x2-x1)

中点:

x3=(x1+x2)/2.;y3=(y1+y2)/2.

垂直线方程:

y-y3=-1./a*(x-x3)
y=-1./a*x+x3/a+y3
a2=-1./a
b2=x3/a+y3

gnuplot脚本:

x1=1.;y1=3.;x2=10.;y2=15.
a=(y2-y1)/(x2-x1)
b=(x2*y1-y2*x1)/(x2-x1)
x3=(x2+x1)/2.;y3=(y2+y1)/2.
a2=-1./a
b2=x3/a+y3
set arrow 1 from x1,y1 to x2,y2 nohead
plot [0:15][0:22] a2*x+b2

答案 1 :(得分:0)

这是简单的数学:

  1. 您的行斜率:slope = (y2 - y1) / (x2 - x1)

  2. 您的行等式:line(x) = slope * (x - x1) + y1

  3. 中间点(称之为xmym,因为xy已保留):

    xm=(x1+x2)/2.0

    ym=(y1+y2)/2.0

  4. 垂线方程:line_perp(x) = -(x-xm)/slope + ym

  5. 绘制两个:plot line(x), line_perp(x)

  6. 如果y2==y1x2==x1,即两个点位于水平/垂直线,您可以使用箭头修复脚本:

    if (y2==y1 || x2==x1) {
      set arrow from xm, graph 0 to xm, graph 1 nohead
      plot ym
    } else {
      plot line(x), line_perp(x)
    }