gpt4 book ai didi

java - 如何查找位于 3D 边界内的点

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:14 24 4
gpt4 key购买 nike

我目前正在开发一个基于 Java 的 Android 项目。我正在使用 OpenGL-ES 3.0。

在我的项目中,我有一个大型、复杂的 3D 对象(人头),具有 100000 多个顶点和 400000 多个三角形。对象的顶点存储在数组中。物体可以相对于其质心旋转。

我正在尝试实现一个功能,其中用户选择头上的一组点,并绘制一条连接每个点的线(有点像“连接点”)。换句话说,用户选择头上的点(p1、p2、p3...pn),所选点将改变颜色。然后,在选择最后一个点 (pn) 后,运行算法来计算每个点之间的所有顶点(例如,p1 和 p2)。然后,这些顶点将改变颜色,因此用户会在他们选择的每个点之间看到一条线(或接近一条线)。

我已经实现了一种允许用户选择点并通过更改颜色来查看这些点的方法。我遇到的困难是点之间的线的实现。

我目前绘制这些线的唯一想法是利用我已经编程的代码。我有代码允许用户移动椭球体(他们可以选择尺寸并旋转椭球体)。他们将椭圆体移动到头部的某个位置,并运行一种算法来计算位于椭圆体体积内的头部的所有点,并更改这些点的颜色。

我的想法是取 p1 和 p2 的中点,将其设置为椭球体的中心,然后旋转/拉伸(stretch)椭球体尺寸,以便一个轴从 p1 到 p2,另一个轴是某个大值。基本上,它看起来就像采用扁平的球状形状(类似于红细胞)并将球的一端放在 p1 上,将另一端放在 p2 上。然后我可以运行我已经编码的算法来查找该椭球体内的所有点。然后我可以更改这些点的颜色,用户可以看到他们选择的每个点之间的一条线。

有人对这项技术有任何批评吗?还有其他方法可以达到我想要的结果吗?

最佳答案

检查一个点是否接触或位于椭球体内部:

  • 通过 -x、-y、-z 平移世界(x、y 和 z 是椭圆的center) 使得 (0, 0, 0) 成为椭球体的新中心。
  • 旋转世界,使椭球体旋转 0 度。
  • 按 1/a、1/b 和 1/c 缩放世界(a、b 和 c 为长度 3椭圆轴)。
  • 如果 sqroot(a^2 + b^2 + c^2) <= 1,则该点位于球体内部。

关于java - 如何查找位于 3D 边界内的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33443554/

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