sae*_*edn 50
您可以通过查找线段的单位矢量并将其缩放到所需长度,然后使用此矢量平移线段的终点来实现.假设您的线段端点是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;
Run Code Online (Sandbox Code Playgroud)
如果您已经有斜率,则可以计算新点:
x = old_x + length * cos(alpha);
y = old_y + length * sin(alpha);
Run Code Online (Sandbox Code Playgroud)
我有一段时间没有这样做,所以拿一粒盐.
小智 6
我自己搜索后偶然发现了这一点,为了给您一个开箱即用的解决方案,您可以查看标准 Vector 类(任何语言)中的代码,然后选择您需要的部分,但我最终使用了一个,代码如下所示:
vector.set(x,y);
vector.normalize();
vector.multiply(10000);// scale it by the amount that you want
Run Code Online (Sandbox Code Playgroud)
祝你好运 !