在 LibGdx 中画一条线,经过某个点

Draw a line in LibGdx that passes for a certain point

在 LibGdx 中有一种非常简单的绘制形状的方法,目前我正在绘制这样的线条:

shapeRenderer.begin(ShapeType.Line);
shapeRenderer.line(x1, y1, x2, y2);
shapeRenderer.end();

有一个定义的起点和终点,我们分别称它们为点 1 和点 2。我需要画一条线,从点 1 开始,经过点 2 并沿同一方向继续,如下所示:

知道如何做到这一点吗?

假设您有两个向量代表您的两个点:

Vector2 p1 = new Vector2(x1, y1);
Vector2 p2 = new Vector2(x2, y2);

那么你想做的事情只需这样做就可以实现:

Vector2 p3 = new Vector2(p2).sub(p1).add(p2);

shapeRenderer.line(p2.x, p2.y, p3.x, p3.y);

可以在计算p3时使用scl()方法改变p2p3之间的距离:

Vector2 p3 = new Vector2(p2).sub(p1).scl(0.5f).add(p2);

例如,如果您使用 scl(1f) 或根本不使用它,就像在前面的代码片段中那样,p2p3 之间的距离将与 p1p2。如果你调用 scl(0.5f) 长度将除以 2,等等