Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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:将一个对象的质心移动到另一个复杂对象上的特定点_Java_Android_Opengl Es_Glu - Fatal编程技术网

Java Android OpenGL:将一个对象的质心移动到另一个复杂对象上的特定点

Java Android OpenGL:将一个对象的质心移动到另一个复杂对象上的特定点,java,android,opengl-es,glu,Java,Android,Opengl Es,Glu,我正在开发一个医疗应用程序,其中包括一些数据可视化的android OpenGL。在我的应用程序中,我有一个复杂的大脑对象(约80000个顶点)和一个小球体。我想找出一种方法,可以将球体的质心移动到大脑的某个顶点 在我看来,这可以分为两个问题(我没有很好的解决方案)。第一个问题是确定要将球体移动到哪个顶点。理想情况下,如果我能简单地触摸大脑上的某个位置,然后用这种方式选择最近的顶点,那就太好了。我尝试使用glUnProject将窗口坐标转换为世界坐标,但未成功。我的另一个想法是简单地获取相机的位

我正在开发一个医疗应用程序,其中包括一些数据可视化的android OpenGL。在我的应用程序中,我有一个复杂的大脑对象(约80000个顶点)和一个小球体。我想找出一种方法,可以将球体的质心移动到大脑的某个顶点

在我看来,这可以分为两个问题(我没有很好的解决方案)。第一个问题是确定要将球体移动到哪个顶点。理想情况下,如果我能简单地触摸大脑上的某个位置,然后用这种方式选择最近的顶点,那就太好了。我尝试使用glUnProject将窗口坐标转换为世界坐标,但未成功。我的另一个想法是简单地获取相机的位置,然后找到离相机最近的顶点

第二个问题是确定如何将球体移动到该顶点。这是我认为我有合理逻辑的部分,但它不能正常工作。我有球体的初始位置。当用户触摸大脑(对于前面描述的第一次尝试)或移动相机(对于前面描述的第二次尝试),我基本上迭代了大脑的所有顶点,并使用距离公式,找到了距离我的触摸位置或相机最小的顶点。我保存了这个顶点,然后继续平移球体。基本上,我的平移涉及到获取新顶点,减去球体的当前位置,然后平移球体。然后,我会将球体的新当前位置保存为新顶点的位置

对我来说,这一切最大的障碍是我的球体不会转化为大脑上的任何点。当我告诉它时,它会移动,通常是在正确的方向,但它的质心不在任何顶点上

总而言之,这是我的两个大问题:

  • 对于我的第一个问题,是否有人对哪种可能是更好的顶点拾取方法有任何意见(哪种方法更容易或更有效?)。如果有人认为第1种方法更好,是否有关于glUnProject参数的深入教程?我无法理解“视图”参数
  • 对于我的第二个问题,我的逻辑有什么问题吗?一旦我找到一个顶点,我就在球体上执行线性平移,它应该移动到那个新的顶点,对吗

  • 不要紧,原来比例因子在我的代码中丢失了,我没有应用它们,现在这些点位于正确的位置。

    不过,如果有人能在Android上演示如何将世界坐标转换为opengl坐标,包括对glUnProject的解释,我将不胜感激