У меня также есть функция TileUnderMouse (выбор), которая находит ближайший тайл, край или вершину на основе текущего положения мыши. Это работало правильно, когда все было сгенерировано с использованием координат с плавающей запятой.
Однако из-за проблем с точностью с плавающей запятой некоторые вершины, которые должны быть общими для плиток, в конечном итоге дублируются (например, такие значения, как 0,333333 и 0,333334). Чтобы это исправить, я попытался масштабировать систему координат так, чтобы дробные значения (например, 1/3) стали целыми числами (например, умножив индексы/координаты на 6).
После этого сама генерация сетки по-прежнему работает, но логика TileUnderMouse теперь нарушена и больше не возвращает правильный тайл/край/вершину. Я подозреваю, что проблема заключается в математических вычислениях, используемых для преобразования из мирового пространства (положения мыши) обратно в шестнадцатеричные индексы/плитки/края/вершины.
В чем мне нужна помощь:
- Правильный математический подход для создания фрагментов, ребер и вершин для шестигранной сетки с заостренной вершиной без проблем с дублированием чисел с плавающей запятой
- Является ли масштабирование координат (например, на 6) разумным решением или существует лучший подход с целочисленными/осевыми/кубическими координатами
- Как следует адаптировать выбор (мир → шестигранник/ребро/вершина), если внутреннее представление масштабируется или является целочисленным
- Рекомендации по созданию параметров генерации (шестнадцатеричный размер, интервал, масштаб), настраиваемый с помощью объекта данных в Unreal
Найдите текущие ссылки для вставки кода ниже:
HexBoardConfig.h
HexBoardConfig.cpp
HexGridPlacement.h
HexGridPlacement.cpp
Подробнее здесь: https://stackoverflow.com/questions/798 ... ices-edges
Мобильная версия