Как мне найти координату 1 точки относительно горизонтального и вертикального угла 2 точки, и расстояния между ними?

Мне надо написать функцию на языке Java, которая будет принимать на входе точку (x,y,z), горизонтальный и вертикальный угол (в градусах) и дистанцию между ранее введённой и пока-что не известной точками, и с этими данными надо найти координаты неизвестной точки. (функция возвращает объект класса Point3D, аргументом конструктора которого есть 3 переменных типа double x, y, z)

Я пытался найти ответ на эту задачу, но максимум что я нашёл, так эту функцию

public Point3D moveInTheDirection (double distance, double horizontalAngle, double verticalAngle, double x, double y, double z) {
    double horizontalAngleRad = Math.toRadians(horizontalAngle);
    double verticalAngleRad = Math.toRadians(verticalAngle);
    
    double pointX = x + distance * Math.cos(horizontalAngleRad) * Math.cos(verticalAngleRad);
    double pointZ = z + distance * Math.sin(horizontalAngleRad) * Math.cos(verticalAngleRad);
    double pointY = y + distance * Math.sin(verticalAngleRad);

    return new Point3D(pointX,pointY,pointZ);
}

Но я заметил, что функция работает не корректно, и при абсолютно-вертикальном угле (Горизонтальный угол = 0, Вертикальный угол = 90, то есть точка смотрит вверх или вниз) ответ получается:

x = 6.123233995736766E-16, y = 10.0, z = 0.0

Каким образом можно исправить этот неполадок, или какой функцией можно заменить эту?


Ответы (0 шт):