Java найти точку на круге, играя - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть следующее уравнение, чтобы найти точку на окружности:

x = (int) (10 * Math.cos(45.0));
y = (int) (10 * Math.sin(45.0));
x1 = new Point(x, y);

Затем я рисую линию от центра круга к этой новой точке.

Я бы получилдумал, что изменение параметров функций Math.cos и Math.sin изменит угол, под которым линия выходит из центра, но когда я проверяю это, это радиус круга, который, если он изменяется, меняет уголна котором проведена линия.

Я неправильно понимаю математику?Что здесь не так?

Это линия, проведенная из центрального круга с помощью приведенного выше уравнения, хотя она должна быть такой же длины, как радиус этого центрального круга

enter image description here

Это полученное изображение, когда уравнение имеет вид:

x = (int) (350 * Math.cos(45.0));
y = (int) (350 * Math.sin(45.0));
x1 = new Point(x, y);    

enter image description here

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Кажется, в вашем коде более одной ошибки.Было бы очень полезно, если бы вы показали в качестве полного кода Минимальный, Полный и Проверяемый пример .Еще есть некоторые предположения:

  1. Предполагая, что xc и yc являются переменными со значениями центра круга, а R - радиус, точка на окружностипод углом alpha равно

    x = R * Math.cos (alpha) + xc;y = R * Math.sin (alpha) + yc;

В вашем коде похоже, что ваши xc и yc оба 0, поэтому вы эффективно рисуете линиюот центра круга до точки на круге с центром (0,0), который в мире Java 2d является верхним левым углом экрана.

Как указывал MadProgrammer, Math.cos и Math.sin принимают аргументы в радианах, а значение 45.0 предполагает использование градусов.Использование Math.toRadians, вероятно, решит проблему.

Могут быть и другие проблемы, но с текущим состоянием вопроса трудно догадаться.

0 голосов
/ 07 декабря 2018

Math.cos и Math.sin задокументированы как принимающие радианы, а не градусы

Использование Math.toRadians и Math. toDegrees для преобразования между ними

cos

public static double cos (double a)

Возвращает тригонометрический косинус угла.Особые случаи:
* Если аргумент равен NaN или бесконечности, то результат равен NaN.

Вычисленный результат должен быть в пределах 1 ulp от точного результата.Результаты должны быть полумонотонными.

Параметры:
a - угол в радианах.
Возвращает:
косинус аргумента.

...