Минимизируйте ошибку \ ошибку при преобразовании полярной и декартовой Java

Я использую этот код для преобразования полярных в декартовы и наоборот:

    final double alpha = Math.atan2(y - originY, x - originX);
    final int checkx = originX + (int) (radiusW * (Math.cos(alpha)));
    final int checky = originY + (int) (radiusH * (Math.sin(alpha)));
    final double newAlpha = Math.atan2(checky - originY, checkx - originX);
    double fault = Math.toDegrees(newAlpha) - Math.toDegrees(alpha);

Используя это, я получаю ошибку, которая может достигать 15 градусов, это может быть лучше?

Спасибо!

РЕДАКТИРОВАТЬ:

    final double alpha = Math.atan2(y - originY, x - originX);
    final double checkx = originX +  (radiusW * (Math.cos(alpha)));
    final double checky = originY +  (radiusH * (Math.sin(alpha)));
    final double newAlpha = Math.atan2(checky - originY, checkx - originX);
    double fault = Math.toDegrees(newAlpha) - Math.toDegrees(alpha);

Пробовал ту же самую ошибку...

Например:

public static void main(String[] args) {
    int originY = 700;
    int originX = 500;
    int radiusW = 500;
    int radiusH = 700;
    int y = 800;
    int x = 600;
    final double alpha = Math.atan2(y - originY, x - originX);
    final double checkx = originX + (radiusW * (Math.cos(alpha)));
    final double checky = originY + (radiusH * (Math.sin(alpha)));
    final double newAlpha = Math.atan2(checky - originY, checkx - originX);
    System.out.println(Math.toDegrees(newAlpha) - Math.toDegrees(alpha));
}

Выход:

+9,462322208025618

0 ответов

Другие вопросы по тегам