gpt4 book ai didi

java - Vector 在另外两个之间的计算位置

转载 作者:行者123 更新时间:2023-11-30 11:02:32 26 4
gpt4 key购买 nike

我认为我目前的问题与每个人在学校学到的截距定理有关,但那是很久以前的事了,我有点半途而废了。

我的问题:

我在二维空间中有两个 vector ,分别称为 v1v2
我想知道的是 vector v3 的坐标,它位于 v1v2 之间的线段上。
我对 v3 的了解是 v1v3 以及 v2v3 之间的线段长度。我的想法总是围绕着使用 v1v2 之间的斜率来确定 v3 的坐标,但在这一点上我得到了卡住了。

这是我用于该问题的实际代码:

private Vector2 getPointOnLine(Vector2 v1, Vector2 v2, float distance) throws Exception
{
double lengthOfSegment=Math.floor(Math.pow(v2.x - v1.x, 2)+Math.pow(v2.y-v1.y,2));

Vector2 slopeXY=v2.sub(v1);
float slope=1/slopeXY.x;
slopeXY.x=slopeXY.x*slope;
slopeXY.y=slopeXY.y*slope;
}

actuell问题与游戏相关,我想让一个盟军单位(v2)跟随玩家(v1),但始终保持特定距离(distance)。

我正在使用 LibGDX,是否有任何库函数可以为我完成这项工作?

最佳答案

我认为您正在尝试进行插值并获得一个 vector ,该 vector 是 v1 和 v2 的“混合”。这将在他们之间。 (假设将 v1 和 v2 视为位置 vector )您可以通过对 vector 进行加权平均来做到这一点,但是如果距离是以绝对值而不是相对值给出的,那么您将需要转换:

事实上,事实证明 libGDX vector 可以为您做到这一点!

private Vector2 getPointOnLine(Vector2 v1, Vector2 v2, float distance) 
{
double length = Math.hypot(v1.x - v2.x, v1.y - v2.y);
distance /= length;
return v1.cpy().lerp(v2, distance);

}

Vector2.lerp是libGDX提供的线性插值方法

关于java - Vector 在另外两个之间的计算位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com