У меня есть неопределенное количество очков на карте, основанной вокруг центра. Они должны быть расположены в многоугольнике, поэтому их угол равен 360/количество очков (http://prntscr.com/8z2w3z). У меня есть центральная точка, длина и направления, поэтому должно быть возможно найти координаты для точек. Поскольку я работаю с Bukkit для создания плагина minecraft, единственный способ добавить места - это добавить их координаты, поэтому я не могу просто дать им направление. Вот код, я должен работать, но не сделал:Получение координат для правильного многоугольника
float teamAngle = angle * teamNumber;
Location spawnPoint = mapCenter;
float relX = (float)Math.cos(Math.toRadians(teamAngle))*radius;
float relZ = (float)Math.sin(Math.toRadians(teamAngle))*radius;
spawnPoint.add(new Location(Bukkit.getWorld("world"), relX, 0, relZ, 0, 0));
teamAngle
является φ для каждой точки, так и с 4 очками, было бы 0, 90, 180 и 270radius
является просто поплавок на основе размера карты/2 * 0.8. Это не может быть лучшим имя переменной
С 4 очка, я бы ожидать, что-то вроде этого (ширина карты 100 => радиусом 40, центром в точке (0 | 0)):
- (40 | 0)
- В (0 | -40)
- C (-40 | 040)
- D (0 | 40)
EDIT: На самом деле, как комментатор сказал, c аорты должны быть немного разными, я изменил его выше
«Это не сработало» не дает никакой соответствующей информации, чтобы помочь исправить вашу проблему. – Unihedron
Ваши ожидаемые точки предназначены для углов 45 °, -45 °, -135 °, 135 ° с радиусом 56,5. Вы должны получить (40,0), (0,40), (-40,0), (0, -40). Или (28,28), (- 28,28) и т. Д. С 'teamAngle = angle * (teamNumber + 0.5)'. – LutzL