Я пытаюсь найти способ определить, находится ли Point3f внутри или на краю сетки, состоящей из шестиугольников (каждый из которых является определенным объектом Shape3D).
Идея состоит в том, чтобы изменить цвет шестиугольника, совпадающего с Point3f или обоих шестиугольников, если точка находится на краю.
Чтобы сделать сетку, я использовал эту логику http://playtechs.blogspot.com/2007/04/hex-grids.html Таким образом, должно быть довольно легко узнать, как Hexagon расположены друг от друга.
Моя проблема связана с координатами, есть структура, которую я использую в SceneGraph:
BranchGroup > TransformGroup > Hexagrid (TransformGroup) > HexaRow (TranformGroup) > Hexagon (Shape3D)
Каждая группа TransfromGroup создается с помощью Transform3D (Vector3F) для ее позиционирования в трехмерном пространстве.
Я хотел бы восстановить координаты каждого шестиугольника из BranchGroup, потому что мой Point3f будет генерироваться в корне SceneGraph.
Я попытался поместить координаты вершины в HashMap, где Point — это координата в сетке шестиугольника, а Point3f[] — координаты в трехмерном пространстве каждой вершины шестиугольника. Я сделал это при добавлении шестиугольника в строку, но поскольку есть 3 вектора для размещения структуры до этого шага с каждым из них в локальной системе координат, я не мог заставить ее работать должным образом.
Есть ли более простой способ найти координаты объекта Shape3d без добавления всех векторов, используемых для его получения?
Это вообще правильный способ достичь моей цели? (из того, что я понял, обнаружение столкновений работает только с двумя объектами, и мне действительно нужно знать, находится ли моя точка на краю, делает 3 объекта)
Спасибо за помощь !