我试图找出一种方法来查找 Point3f 是否在由六边形(每个都是特定的 Shape3D 对象)制成的网格的内部或边缘上。
如果该点位于边缘,则想法是更改与 Point3f 或两个 Heaxgon 相同的 Hexagon 的颜色。
为了制作网格,我使用了这个逻辑http://playtechs.blogspot.com/2007/04/hex-grids.html 所以应该很容易知道 Hexagon 是如何相互定位的。
我的问题与坐标有关,我在 SceneGraph 中使用了结构:
BranchGroup > TransformGroup > Hexagrid (TransformGroup) > HexaRow (TranformGroup) > Hexagon (Shape3D)
每个 TransfromGroup 都使用 Transform3D(Vector3F) 创建以将其定位在 3D 空间中
我想从 BranchGroup 中恢复每个 Hexagon 的坐标,因为我的 Point3f 将在 SceneGraph 的根上生成。
我试图将顶点坐标放在 HashMap 中,其中 Point 是六边形网格中的坐标,Point3f[] 是六边形每个顶点在 3d 空间中的坐标。我在行上添加六边形时这样做了,但是由于是 3 个向量来放置结构,直到该步骤与每个本地坐标系一起,我无法让它正常工作。
有没有一种更简单的方法可以找到 Shape3d 对象的坐标,而无需添加所有用于获取它的向量?
这甚至是实现我的目标的正确方法吗?(据我了解,碰撞检测仅适用于 2 个对象,我真的需要知道我的点是否在边缘,生成 3 个对象)
谢谢您的帮助 !