在 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()
方法改变p2
和p3
之间的距离:
Vector2 p3 = new Vector2(p2).sub(p1).scl(0.5f).add(p2);
例如,如果您使用 scl(1f)
或根本不使用它,就像在前面的代码片段中那样,p2
和 p3
之间的距离将与 p1
和 p2
。如果你调用 scl(0.5f)
长度将除以 2,等等
在 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()
方法改变p2
和p3
之间的距离:
Vector2 p3 = new Vector2(p2).sub(p1).scl(0.5f).add(p2);
例如,如果您使用 scl(1f)
或根本不使用它,就像在前面的代码片段中那样,p2
和 p3
之间的距离将与 p1
和 p2
。如果你调用 scl(0.5f)
长度将除以 2,等等