Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 约束连接/绳索/绳索以避免拉伸_Java_Android_Algorithm_Libgdx_Game Physics - Fatal编程技术网

Java 约束连接/绳索/绳索以避免拉伸

Java 约束连接/绳索/绳索以避免拉伸,java,android,algorithm,libgdx,game-physics,Java,Android,Algorithm,Libgdx,Game Physics,我们一直在开发一个游戏(2d),其中一个对象可以连接到静态点。每个连接(在我们的例子中是一根绳子)都有一个固定的长度,可以改变(一次只能改变一个)。情况可能如所附图片所示。现在我想知道物体可以向哪个方向移动,距离绳子完全伸展有多远。换句话说,我想知道哪根绳子可以缩短,以及在一些绳子拉伸之前可以缩短多少。谢谢你的提示 在每个静态点周围画一个半径等于长袍长度的圆。与所有圆相交的区域是对象可以移动的区域。在该区域的边界处,至少有一件长袍被拉伸。您好,非常感谢您的输入。我也这么想。所以如果我想检查物体是

我们一直在开发一个游戏(2d),其中一个对象可以连接到静态点。每个连接(在我们的例子中是一根绳子)都有一个固定的长度,可以改变(一次只能改变一个)。情况可能如所附图片所示。现在我想知道物体可以向哪个方向移动,距离绳子完全伸展有多远。换句话说,我想知道哪根绳子可以缩短,以及在一些绳子拉伸之前可以缩短多少。谢谢你的提示


在每个静态点周围画一个半径等于长袍长度的圆。与所有圆相交的区域是对象可以移动的区域。在该区域的边界处,至少有一件长袍被拉伸。

您好,非常感谢您的输入。我也这么想。所以如果我想检查物体是否可以移动到X方向,我只需要找出新的位置是否超过了一个静态点(和它的绳子)的半径,对吗?但是,如何找出它可以向所需的方向移动多远呢?计算最小超出距离是否足够?您需要计算所需方向上直线与所有圆的交点。离原点最近的交叉点就是这个方向的车费,基本上是一样的,不是吗?假设对象的新位置为O(x/y),则我必须计算圆与P之间的距离,即“距离=sqrt((circle.x-O.x)^2+(circle.y-O.y)^2)-半径”,如果大于0,则无法移动,如果小于0,则可以移动“移动距离=数学.abs(距离)”?(所有圆中最小的移动距离?)如果你的意思是以(circle.x,circle.y)为圆心,那么我不同意。在大多数情况下,你想移动的方向与圆心的方向并不完全相反。我更新了上面的评论。啊,现在我明白你的意思了。有一条线指向对象应移动的方向。位于直线上且位于所有圆内的最远点是物体可以移动到的最远点?您将如何有效地实现这一点?