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

Помогите Между двумя location

Тема в разделе "Разработка плагинов для новичков", создана пользователем serega6531, 2 фев 2014.

  1. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Нет ли готовой удобной функции, чтобы узнать, находится ли локация между двумя другими локациями?
     
  2. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Я сделал такую:

    Код:
        public static boolean isBeetwen2Locations(Location t, Location f, Location s){
            double fx = f.getX();
            double fy = f.getY();
            double fz = f.getZ();
            double sx = s.getX();
            double sy = s.getY();
            double sz = s.getZ();
            double tx = t.getX();
            double ty = t.getY();
            double tz = t.getZ();
            return ((fx < tx && tx < sx && fy < ty && ty < sy && fz < tz && tz < sz) ||
     (fx > tx && tx > sx && fy > ty && ty > sy && fz > tz && tz > sz));
        }
    Но нет ли официальной?
     
  3. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Официальной нет. Можно почудить с location.distance()
     
  4. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Жаль. Мое будет работать?
     
  5. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Почему бы не начать своё знакомство с базовыми алгоритмами? У кого-то этого явно не достаёт.

    Оно будет работать, но не всегда правильно, потому, что некоторые вариации расположения точек не были учтены. Нарисуй на бумаге все варианты расположения двух точек в трёхмерном пространстве и сформулируй своё итоговое условие.
     
    Bars нравится это.
  6. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Код:
            return (((fx < tx && tx < sx) || (fx > tx && tx > sx)) &&
                    ((fy < ty && ty < sy) || (fy > ty && ty > sy)) &&
                    ((fz < tz && tz < sz) || (fz > tz && tz > sz)));
    А так?
    @ptnk Правильно?
     
  7. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    У vector есть такой метод как isInAABB.
     
  8. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Да здесь похоже метод , который ищет принадлежность области, ограниченной для двух точек.
    А твой метод, возможно проверяет на принадлежность прямой.

    И что это ? О_о.

    Нарисуй на листочке и рассматривай эти точки. Я подразумеваю, что точка должна лежать между двумя точками - трёхмерную область, своеобразный регион привата, т.е. 3D область, и в таком случае для двух точек я насчитывают 4 различных случая: одна точка ниже или выше другой, одна точка правее или левее другой - скомбинируй эти возможности и получи набор.
     
  9. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    isInAABB проверяет на принадлежность точки кубоиду ограниченному двумя точками.
     
  10. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Ну вот, ты тем самым зарубил развитие логики данного человека, а ему бы создание своего велосипеда не помешало бы.
     
  11. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ему всё равно придётся научиться различать какая точка минимальная а какая максимальная иначе проверка не заработает.
     

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