说,我在同一条线上有两个点(x1,y1)和(x2,y2)。连接这两个点的中点是(x,y)。是否有可能在gnuplot中通过(x,y)绘制垂直平分线?我该如何画出来?
答案 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)
这是简单的数学:
您的行斜率:slope = (y2 - y1) / (x2 - x1)
您的行等式:line(x) = slope * (x - x1) + y1
中间点(称之为xm
,ym
,因为x
,y
已保留):
xm=(x1+x2)/2.0
ym=(y1+y2)/2.0
垂线方程:line_perp(x) = -(x-xm)/slope + ym
绘制两个:plot line(x), line_perp(x)
如果y2==y1
或x2==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)
}