我正在尝试找到一种将线段延伸特定距离的方法。例如,如果我有一个从10,10开始延伸到20,13的线段,并且想将长度延长3,该如何计算新的端点。在此示例10.44中,我可以通过sqrt(a ^ 2 + b ^ 2)来获取长度,因此,如果我想从10,10中得知长度为13.44的新端点,那么在计算上最快的方法是什么?我也知道坡度,但不知道这种情况是否对我有帮助。
您可以通过找到线段的单位矢量并将其缩放为所需的长度,然后使用此矢量转换线段的端点来实现。假设您的线段终点是A和,B并且您想在终点之后延伸B(并且lenAB是线段的长度)。
A
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;