Указывать на координаты - PullRequest
       3

Указывать на координаты

1 голос
/ 06 февраля 2020

Я пытаюсь сделать стрелку, которая указывает на определенную позицию, но проблема в том, что когда я делаю угол с векторами, он не может сделать разницу между западом и востоком, потому что это 90 ° в обоих. Как я могу сделать западный минус или добавить его на 180 °, чтобы сделать разницу между ними?

Мой код:

double angle = 0;       
Vector a = (targetLoc).toVector().subtract(player.getLocation().toVector()).normalize();
Vector b = player.getLocation().getDirection();
angle = Math.acos(a.dot(b));
angle = Math.toDegrees(angle);

targetLo c - это позиция, которую я хочу указать

Например, когда координаты находятся под углом 90 ° от зрения игрока угол составляет 90 ° на западной стороне и на восточной стороне или когда координаты находятся под 45 ° от точки зрения игрока, угол составляет 45 ° на западной стороне и на восточной стороне.

Я хочу использовать только x и z планируют не y.

1 Ответ

0 голосов
/ 08 февраля 2020

Вот что я сделал, спасибо за вашу помощь

        Vector a = (targetLoc).toVector().subtract(player.getLocation().toVector()).normalize();
        Vector b = player.getLocation().getDirection();
        angle = Math.acos(a.dot(b));
        angle = Math.toDegrees(angle);
        if(a.getX()*b.getZ() - a.getZ()*b.getX() < 0) {
            angle = -angle;
        }
...