Помогите Направление вектора

Fenix78563

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Blc_Dragon
Доброго времени суток, форумчане

Необходимо получить направление вектора (я-ля yaw pitch), имея только вектор (никаких координат нет, иначе я бы тут не спрашивал)
 
Доброго времени суток, форумчане

Необходимо получить направление вектора (я-ля yaw pitch), имея только вектор (никаких координат нет, иначе я бы тут не спрашивал)
Разве в векторе есть такая информация?
 
Разве в векторе есть такая информация?
по определению вектора - да.

так же player.setVelocity(p.getLocation().getDirection) с точностью до пикселя определяет куда игроку двигаться

так что да, есть
 
по определению вектора - да.

так же player.setVelocity(p.getLocation().getDirection) с точностью до пикселя определяет куда игроку двигаться

так что да, есть
Это больше геометрия, из двух точек выводят Yaw и Pitch. Так что тут надо самому считать)
 
Это больше геометрия, из двух точек выводят Yaw и Pitch. Так что тут надо самому считать)
здорово, если первую точку я еще могу получить (getX() и т.д.) то где взять вторую. расчитать то без проблем можно
 
location.getDirection() дает тебе 2ю точку от локации x y z, multiply увеличит на то расстояние, какое ты указал.
Мда, действительно, можно же создать локацию по этим координатам. (есть одно "но", Yaw, Pitch - нулег) следовательно и Direction - тоже нулек(его вообще нет).

однако в методе p.setVelocity - машина точно знает куда двигать игрока.

при попытке получить x y z до и после multiply получается получить (сори за тафтологию, лень синонимы искать) какие то числа, но они какие то не обычные(не больше единицы, т.е. точно не координаты). что в принципе возвращают методы getX\Y\Z(). (по мимо того что добл переменную) что это за числа вообще такие? сорцы, доки, что-то вразумительное есть на эту тему?
 
Мда, действительно, можно же создать локацию по этим координатам. (есть одно "но", Yaw, Pitch - нулег) следовательно и Direction - тоже нулек(его вообще нет).

однако в методе p.setVelocity - машина точно знает куда двигать игрока.

при попытке получить x y z до и после multiply получается получить (сори за тафтологию, лень синонимы искать) какие то числа, но они какие то не обычные(не больше единицы, т.е. точно не координаты). что в принципе возвращают методы getX\Y\Z(). (по мимо того что добл переменную) что это за числа вообще такие? сорцы, доки, что-то вразумительное есть на эту тему? ибо это точно не координаты
Логично же, что у игрока уже имеется Yaw и Pitch.
 
Последнее редактирование:
Логично же, что у игрока уже имеется Yaw и Pitch.
т.е. по твоему у вектора их нет? (вектор без направления? это тогда что такое вообще? что такое вектор в ведре\майнкрафте в целом. есть инфа про это? )
 
X Y Z - Vector. X Y Z Yaw Pitch World - Location.
ахха, я ору. кто то вообще с физикой не друган (оно и видно).

В оригинальной физике - локация была бы а-ля мир, координаты. А вот вектор - уже координаты начала, направление, длина.

Пожалуй это сейчас самое актуальное ↓
что в принципе возвращают методы getX\Y\Z(). (по мимо того что добл переменную)
 
сорсы то у меня есть.

там нет нифига откуда оно вытаскивает эти не понятные числа которые колеблются от -1 до +1

//послезавтра буду ковырять сорсы всего что связано с этой уипанской физикой.
и вот возникла какаха. все это лежит уже не в сервере а в самом майнкрафте(или где то рядом). есть где то варианты получения сорсов? (ибо моджанг их естесно не дает)
 
yaw: Math.toDegrees((Math.atan2(-vector.getX(), vector.getZ()) + Math.PI*2) % Math.PI*2);
pitch: Math.toDegrees(Math.atan(-vector.getY() / Math.sqrt(vector.getX()*vector.getX() + vector.getZ()*vector.getZ())));
А вообще учите матчасть. Это всё ничем не отличается от yaw и pitch, которые используют при создании трёхмерных приложений.
 
yaw: Math.toDegrees((Math.atan2(-vector.getX(), vector.getZ()) + Math.PI*2) % Math.PI*2);
pitch: Math.toDegrees(Math.atan(-vector.getY() / Math.sqrt(vector.getX()*vector.getX() + vector.getZ()*vector.getZ())));
А вообще учите матчасть. Это всё ничем не отличается от yaw и pitch, которые используют при создании трёхмерных приложений.
конечно здорово дать мне вот эти формулы, и сказать мол "учите мат часть". (гугление про atan2 вывело на полярную систему координат. только я блин школьник. нас такому не учат. я вообще не знал что такое существует)

с матчастью у меня все в порядке, я вполне себе запускаю тела по имеющимся yaw и pitch.

проблема в том, что я не знаю ЧТО выдают методы getX\Y\Z.

Что это за числа? Вы можете это сказать? формулы я в состоянии состоянии составить сам.

Может быть это проекции вектора на соответсвующие координаты? или что это вообще такое?
 
конечно здорово дать мне вот эти формулы, и сказать мол "учите мат часть". (гугление про atan2 вывело на полярную систему координат. только я блин школьник. нас такому не учат. я вообще не знал что такое существует)

с матчастью у меня все в порядке, я вполне себе запускаю тела по имеющимся yaw и pitch.

проблема в том, что я не знаю ЧТО выдают методы getX\Y\Z.

Что это за числа? Вы можете это сказать? формулы я в состоянии состоянии составить сам.

Может быть это проекции вектора на соответсвующие координаты? или что это вообще такое?
В классе Vector они выводят x y z, логично же, не?
Vector vec = new Vector(0,1,2);
vec.getX() == 0.0
vec.getY() == 1.0
vec.getZ() == 2.0
 
Потому что double значения. Но в конструкор можно передавать int.
А с Direction нужно работать уже в Location.
Вот банальный пример запуска стрел в 6ти направлениях.

Java:
        Location loc = new Location(world, 0.5, 100.5, 0.5);
     
        loc.setDirection(new Vector(0.00000,-1.00000,0.00000));
        Arrow arr = (Arrow) world.spawnEntity(loc, EntityType.ARROW);
        arr.setVelocity(loc.getDirection().multiply(5));
     
        loc.setDirection(new Vector(0,1,0));
        Arrow arr2 = (Arrow) world.spawnEntity(loc, EntityType.ARROW);
        arr2.setVelocity(loc.getDirection().multiply(5));
     
        loc.setDirection(new Vector(0,0,1));
        Arrow arr3 = (Arrow) world.spawnEntity(loc, EntityType.ARROW);
        arr3.setVelocity(loc.getDirection().multiply(5));
     
        loc.setDirection(new Vector(0,0,-1));
        Arrow arr4 = (Arrow) world.spawnEntity(loc, EntityType.ARROW);
        arr4.setVelocity(loc.getDirection().multiply(5));
     
        loc.setDirection(new Vector(1,0,0));
        Arrow arr5 = (Arrow) world.spawnEntity(loc, EntityType.ARROW);
        arr5.setVelocity(loc.getDirection().multiply(5));
     
        loc.setDirection(new Vector(-1,0,0));
        Arrow arr6 = (Arrow) world.spawnEntity(loc, EntityType.ARROW);
        arr6.setVelocity(loc.getDirection().multiply(5));
мне не нужен запуск энтити. мне нужно понять за что отвечают эти три числа которые задают вектор.
ЧТО ТАКОЕ X Y Z для вектора в манкрафте.
запуск энтити, повторюсь, мне не нужен
 
Это твоя точка в пространстве. В данном случае это вектор 3д.
yaw == 0 и pitch == 0 в локации это поворот на север в майне, на сколько я помню.
противоречишь сам себе. точка не вектор как бы ты не ухищрался
 
Ну не я же так назвал класс, как называется так и говорю.
вектор это точка? ты запускаешь тело в точку?

pl.setVelocity(new Vector(pl.getVelocity().getX(), pl.getVelocity().getY()+1, pl.getVelocity().getZ()));
запустил меня на 6 блоков вверх

интересно как тогда работает магия от Ission ? ибо если вектор это точка то я уже нифига не понял
 
Назад
Верх