1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как рассчитать шар?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Bezobrazie, 12 июл 2021.

Статус темы:
Закрыта.
  1. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Мне нужно рассчитать шар по кордам имея радиус, пытался подсмотреть в
    WorldEdit, но не могу там разобраться и вообще не могу найти там класс который отвечает за расчет шара. И мб есть какая-то библиотека которая рассчитывает шар и выдает корды. Мне это нужно чтобы спавнить партиклы которые должны образовать шар.
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
  3. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Вот смотрю на код и разобраться не могу, читал тот топик уже 4 раза и не могу найти как изменить радиус.
    как работает сам код я отдаленно понимаю. с математикой у меня очень плохо. Щас у меня эта тема рисует мне сферу радиусом наверное 1 блок. но мне понятно нужно больше. Укажи мне пожалуйста где я должен это менять, я уже потеребил каждую переменную)


    PHP:
            for (double i 0<= Math.PI+= Math.PI 50) {
                
    double radius Math.sin(i);
                
    double y Math.cos(i);
                for (
    double a 0Math.PI 2a+= Math.PI 50) {
                    
    double x Math.cos(a) * radius ;
                    
    double z Math.sin(a) * radius;
                    
    location.add(xyz);
                    
    location.getWorld().playEffect(locationEffect.HAPPY_VILLAGER0);
                    
    location.subtract(xyz);
                }
            }
     
  4. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    В своей сути, эти два цикла представляют из себя два круга. Внешний цикл "создает" вертикальный круг, и по нему идет координата Y и переменная radius. Вложенный же - горизонтальный, и соответственно, отвечает за X и Z. Переменная radius отвечает не за радиус всей сферы, а за радиус круга X Z. T.к. цикл вложен, этот круг создается раз за разом с разным радиусом, а т.к. меняется и Y, то и на разной высоте.
    Далее значения X Y Z добавляются к твоей центральной локации (location.add(x, y, z)), и чтобы ничего не сбивалось, отнимаются вновь. К слову, этого можно избежать, заменив эти три строки на одну world.spawnParticle(Particle.VILLAGER_HAPPY, loc.getX() + x, loc.getY() + y, loc.getZ() + z, 1) (world следует взять от локации до внешнего цикла).

    Переходя к изначальному вопросу - для того, чтобы увеличить радиус, достаточно дополнительно умножить переменные x y z на желаемый радиус перед добавлением их к локации.
     
  5. Автор темы
    Bezobrazie

    Bezobrazie Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Спасибо огромное.
     
Статус темы:
Закрыта.

Поделиться этой страницей