小编典典

将线段延伸特定距离

algorithm

我正在尝试找到一种将线段延伸特定距离的方法。例如,如果我有一个从10,10开始延伸到20,13的线段,并且想将长度延长3,该如何计算新的端点。在此示例10.44中,我可以通过sqrt(a
^ 2 + b ^
2)来获取长度,因此,如果我想从10,10中得知长度为13.44的新端点,那么在计算上最快的方法是什么?我也知道坡度,但不知道这种情况是否对我有帮助。


阅读 361

收藏
2020-07-28

共1个答案

小编典典

您可以通过找到线段的单位矢量并将其缩放为所需的长度,然后使用此矢量转换线段的端点来实现。假设您的线段终点是A和,B并且您想在终点之后延伸B(并且lenAB是线段的长度)。

#include <math.h> // Needed for pow and sqrt.
struct Point
{
    double x;
    double y;
}

...

struct Point A, B, C;
double lenAB;

...

lenAB = sqrt(pow(A.x - B.x, 2.0) + pow(A.y - B.y, 2.0));
C.x = B.x + (B.x - A.x) / lenAB * length;
C.y = B.y + (B.y - A.y) / lenAB * length;
2020-07-28