Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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中实现Sweep和Prune_Java_Collision Detection - Fatal编程技术网

在Java中实现Sweep和Prune

在Java中实现Sweep和Prune,java,collision-detection,Java,Collision Detection,我遵循ThinMatrix的游戏开发教程,使用OpenGL和LWJGL,并坚持在我的游戏中实现碰撞检测。我已在网上查阅这些网页—— 但是我不知道任何C++,不能转换代码。如何在java中使用sweep和prune实现broadphase碰撞检测?您试图实现的目标并不是很琐碎,在这里可能回答得太多,但让我们试着描述一些基本步骤来开始 据我所知,ThinMatrix的教程系列中,您必须首先实现轴对齐边界框(AABB),并将其环绕在实体周围,因为您需要用于宽相位检测的边界框。您可以简单地加载一个

我遵循ThinMatrix的游戏开发教程,使用OpenGL和LWJGL,并坚持在我的游戏中实现碰撞检测。我已在网上查阅这些网页——


<>但是我不知道任何C++,不能转换代码。如何在java中使用sweep和prune实现broadphase碰撞检测?

您试图实现的目标并不是很琐碎,在这里可能回答得太多,但让我们试着描述一些基本步骤来开始

据我所知,ThinMatrix的教程系列中,您必须首先实现轴对齐边界框(AABB),并将其环绕在实体周围,因为您需要用于宽相位检测的边界框。您可以简单地加载一个
1x1x1
cube模型并相应地缩放变换矩阵,但您将如何缩放它

在解析obj文件的过程中,记住每个模型的最小和最大顶点位置(
minX,minY,minZ,maxX,maxY,maxZ

然后,您必须重新缩放1x1x1边界框,以便计算边界框的
scaleX、scaleY、scaleZ
,并确保它也尊重原始实体的比例:

float scaleX = (maxX - minX) * model.getScale();
float scaleY = (maxY - minY) * model.getScale();
float scaleZ = (maxZ - minZ) * model.getScale();
然后,您必须计算transformationMatrix并将您的缩放值应用到多维数据集。ThinMatrix实现了方法
math.createTransformationMatrix(…)
,您必须使用三个新参数对其进行扩展

在某个时刻,你最终会得到一个类似于此的AABB:

在此基础上,我建议整合现有的物理库,如:

后者用Java实现了链接论文中描述的算法: