Я обновил этот ответ (оригинал находится в самом низу).
Вы уже знаете радиус круга, его площадь (PI * r в квадрате) и площадь сегмента, который вы пытаетесь построить (smallerPercentage / 100 * areaOfCircle).
Если я правильно понимаю задачу, то формулы для вычисления угла, необходимого для создания сегмента заданной площади и радиуса, не существует.
Однако не все потеряно.
Если бы вы знали угол, вы могли бы также определить площадь с помощью формулы, которая у вас уже есть. A = 0,5 * r в квадрате * (((PI/180) * Θ) - sin(Θ)) где Θ — угол.
Таким образом, единственное решение состоит в том, чтобы начать делать методические предположения о Θ и посмотреть, соответствует ли рассчитанная площадь тому, что вы ожидаете (в пределах определенного допуска).
А учитывая, что процент будет меньше 50 (и больше 0), то: 0 ‹ угол ‹ 180.
Итак, я бы сделал свое первое предположение на 90 градусов. Если область слишком велика, попробуйте еще раз 45, если слишком мала, попробуйте 135. Продолжайте уменьшать размер вдвое каждый раз и добавляйте или вычитайте его из предыдущего угла. Продолжайте сужать его, пока не получите область, которая находится в пределах допуска ожидаемой области. Менее 10 догадок должны привести вас туда.
Я думаю, что это называется «проблема со щупом 1/4 бака»: см.: http://mathforum.org/library/drmath/view/61752.html
Надеюсь, это поможет.
Это был мой первоначальный ответ, прежде чем я правильно понял, что вы пытались сделать:
Я не уверен, что полностью понимаю, чего вы пытаетесь достичь, но вы можете определить нужные углы (в градусах) следующим образом:
smallAngle = 360/100 * smallerPercentage;
largeAngle = 360 - smallAngle;
И вы всегда можете умножить градусы на (PI/180), чтобы получить радианы.
person
AW101
schedule
12.07.2012