在gnuplot中移动箭头

在gnuplot中移动箭头,gnuplot,Gnuplot,我正在画一条需要有箭头的线。我有端点坐标,但因为有一个小球体,它应该移动一点点。任何关于如何在不手动计算新坐标的情况下实现这一点的想法(这真是一件痛苦的事情)。也许更改箭头定义 让我手动计算新坐标:) 假设箭头在2D中的端点由a=(ax,ay)和b=(bx,by)给出。包含点a和b的任何直线的坐标(rx,ry),可根据公式计算 rx(t) = (1-t)*ax + t*bx ry(t) = (1-t)*ay + t*by 其中,t是实数。请注意,r(0)=a和r(1)=b,因此原始箭头可以绘

我正在画一条需要有箭头的线。我有端点坐标,但因为有一个小球体,它应该移动一点点。任何关于如何在不手动计算新坐标的情况下实现这一点的想法(这真是一件痛苦的事情)。也许更改箭头定义


让我手动计算新坐标:)

假设箭头在2D中的端点由
a=(ax,ay)
b=(bx,by)
给出。包含点
a
b
的任何直线的坐标
(rx,ry)
,可根据公式计算

rx(t) = (1-t)*ax + t*bx
ry(t) = (1-t)*ay + t*by
其中,
t
是实数。请注意,
r(0)=a
r(1)=b
,因此原始箭头可以绘制为

set arrow from rx(0),ry(0) to rx(1),ry(1)
要缩短(或放大)此箭头,您可以对
t
值使用与0或1不同的相同指令。例如:

eps=0.1
set arrow from rx(eps),ry(eps) to rx(1-eps),ry(1-eps)   #shortened both sides
set arrow from rx(0),ry(0) to rx(1-eps),ry(1-eps)       #shortened just the end-point
set arrow from rx(0),ry(0) to rx(1+eps),ry(1+eps)       #enlarged just the end-point

据我所知,我会重新调整坐标。例如,定义
epsilon=0.9
,并将此参数与箭头的坐标相乘,例如
将箭头从0.0,-1.0*epsilon,-2.1908902300206643*epsilon设置为0,1.*epsilon,0。ls 10 as 5
这使我的线条略短,与原始线条平行。它可以供我使用,但仍然不知道如何在箭头上添加“上边距”。@vagoberto要真正缩短箭头,计算方法有点不同:
eps=0.1;将箭头从0.0,-1.0+eps*2,-2.19089023*(1-eps)设置为0,1-2*eps,-2.19089023*eps ls 10,设置为5
右侧,在匆忙中,我没有考虑原始向量的可能转换。无论如何,OP应该手动计算新坐标。
eps=0.1
set arrow from rx(eps),ry(eps) to rx(1-eps),ry(1-eps)   #shortened both sides
set arrow from rx(0),ry(0) to rx(1-eps),ry(1-eps)       #shortened just the end-point
set arrow from rx(0),ry(0) to rx(1+eps),ry(1+eps)       #enlarged just the end-point