Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

serega6531

Старожил
Девелопер
Пользователь
Баллы
173
Нет ли готовой удобной функции, чтобы узнать, находится ли локация между двумя другими локациями?
 
Я сделал такую:

Код:
    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));
    }
Но нет ли официальной?
 
Официальной нет. Можно почудить с location.distance()
 
Жаль. Мое будет работать?
Почему бы не начать своё знакомство с базовыми алгоритмами? У кого-то этого явно не достаёт.

Оно будет работать, но не всегда правильно, потому, что некоторые вариации расположения точек не были учтены. Нарисуй на бумаге все варианты расположения двух точек в трёхмерном пространстве и сформулируй своё итоговое условие.
 
Почему бы не начать своё знакомство с базовыми алгоритмами? У кого-то этого явно не достаёт.

Оно будет работать, но не всегда правильно, потому, что некоторые вариации расположения точек не были учтены. Нарисуй на бумаге все варианты расположения двух точек в трёхмерном пространстве и сформулируй своё итоговое условие.
Код:
        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 Правильно?
 
У vector есть такой метод как isInAABB.
 
У vector есть такой метод как isInAABB.
Да здесь похоже метод , который ищет принадлежность области, ограниченной для двух точек.
А твой метод, возможно проверяет на принадлежность прямой.

Код:
        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 Правильно?

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

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



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

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

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

Назад
Верх