Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 Android上OpenGL ES中从点到卷的冲突/距离_Java_Android_Opengl Es_Collision Detection_Mesh - Fatal编程技术网

Java Android上OpenGL ES中从点到卷的冲突/距离

Java Android上OpenGL ES中从点到卷的冲突/距离,java,android,opengl-es,collision-detection,mesh,Java,Android,Opengl Es,Collision Detection,Mesh,我有一个显示空域的opengl渲染器 我需要计算我在float[3]中转换的位置是否在多个卷中 我还想用最近的体积计算距离 体积是沿z轴拉伸的随机形状 最有效的算法是什么 我不想使用外部库。您这里有一个。由于您的网格是恒定的并且不会改变,所以您可能应该使用空间分割算法。这是一个很大的主题,但简而言之,您通常需要使用树结构,并将所有对象排序到不同的树节点中。您需要预先计算树本身。网上有很多关于空间划分的书籍和教程,你也可以从Doom、Quake等id软件产品的源代码中了解这种算法(至少是BSP)是

我有一个显示空域的opengl渲染器

我需要计算我在float[3]中转换的位置是否在多个卷中

我还想用最近的体积计算距离

体积是沿z轴拉伸的随机形状

最有效的算法是什么


我不想使用外部库。

您这里有一个。由于您的网格是恒定的并且不会改变,所以您可能应该使用空间分割算法。这是一个很大的主题,但简而言之,您通常需要使用树结构,并将所有对象排序到不同的树节点中。您需要预先计算树本身。网上有很多关于空间划分的书籍和教程,你也可以从Doom、Quake等id软件产品的源代码中了解这种算法(至少是BSP)是如何使用的。每个算法的效率取决于您拥有什么和需要什么。例如,使用BSP树,您可以将对象从最近到最远排序,以便快速获得所需的对象。

您的应用程序中是否可以使用空间分割算法?卷是动态变化的还是它们的属性是预定义的?我自己用纯java做所有事情。我的网格从tex文件转换为三角形带。我计算了近似距离的点中心。我还可以加上最小最大X,Y,Z。网格是最终的。他们不会改变。请看答案。继续问这个可能更好。谢谢!您是否有适用于Java中OpenGL ES的代码示例的链接?我在GitHub上找不到它。我添加了一个图像来表示我的问题。这里有一个指向我在facebook上的项目页面的链接:@gregouplus我没有链接,对不起。实际上,它们并不是OpenGL ES特有的东西,它们(或其中一些)或多或少会按照从最近到最远的顺序对对象列表进行排序。在这种情况下,你可以递归地遍历一个树结构来找到最近的卷。事实上,我的问题解决了一半。我知道如何计算我是否在体积的边界框内。我需要的是两件事:\n计算我是否在一个二维平面形状内,并使用lat/lon\n为地面计算我的垂直切割的位置是一个不同高度的正方形浮点数。我知道这些点的x/y/z。但是我在哪里切割那架飞机呢。我认为这是一道简单的数学几何题。