Невозможно рассчитать площадь правильного многоугольника - неверный результат по формуле касательной - PullRequest
1 голос
/ 10 апреля 2020

У меня есть этот метод для вычисления площади обычного многоугольника:


    public double getArea()  {
        return (sideLength *
            sideLength * sides) /
            (4 * Math.tan(180 / (double) sides));
    }

для sideLength и sides, оба равные 10, он возвращает -219.816218. «Однако этот онлайн-калькулятор: https://www.omnicalculator.com/math/regular-polygon-area возвращает 769,4. Что не так с моим методом? Используемая мной формула указана здесь .

Ответы [ 3 ]

1 голос
/ 10 апреля 2020

Аргументы для тригонометрических функций c определены в радианах, а не в градусах. Используйте Math.toRadians, чтобы преобразовать угол в градусах в радианы, например:

Math.tan(Math.toRadians(180 / (double) sides))

. Или начните с вычисления в радианах.

Math.tan(Math.PI / sides)
1 голос
/ 10 апреля 2020

Проблема в том, что функция Math.tan использует радианы в качестве единицы измерения по умолчанию. Используйте это вместо:

(4*Math.tan(Math.PI/180 * 180/(double) sides))
1 голос
/ 10 апреля 2020

Используйте следующую инструкцию возврата

return (sideLength  * sideLength  * sides) / (4 * Math.tan((180 / sides) * 3.14159 / 180));

Здесь *(3.14159 / 180) добавляется для преобразования области из degree в radians

...