将一条线段的终点坐标进行转换的函数

5

我有一条线的末尾有两个点。
我需要得到这条线平移后的末端坐标。
平移后的线将是与原始线距离为d的平行线。
以下是我需要的一个图像:

enter image description here

因此,我需要一个函数,可以向其传递这两个点和距离,并返回两个新坐标。
我已经被这个问题困扰了一段时间。任何帮助都将不胜感激!
谢谢你!


如果 distance 是正数,那么这条线将被投影到哪个方向?如果是负数呢? - justderb
这个翻译缺乏另一个方向的明确性。有无数条与该线距离为d且平行的直线。 - cheeken
2
我希望它是与原始线段长度相同且平行的线段。如果您在旧点和新点之间画一条线,它应该与原始线段形成垂直线。我不确定这是否清楚。但我想要看到图片中的那条线。 - braden.groom
2个回答

3
新的坐标将是距离d乘以其移动方向的归一化向量,加上原始向量点所得到的结果向量。 编辑: 给定线段的两个点,需要计算连接这些点的向量的法向量。有关此信息,请点击此处。 归一化该向量,乘以d,并添加到每个

玩了一会儿后,我弄明白了!非常感谢。 - braden.groom

2

计算向量(x2-x1,y2-y1)。这是指向你的线方向的向量。法向量可以由下式给出

    (-(y2-y1),-(x2-x1)) = (y1-y2,x1-x2). 

将该向量除以其大小,即可得到所需方向上的单位向量。

    A = (y1-y2,x1-x2)/|(y1-y2,x1-x2)|

现在,假设您的距离为d,则翻译后的点将由以下公式给出:
    NewPoint = OldPoint + d * A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接