Фон
Недавно я играл с GDI +, чтобы нарисовать «Диск», отображающий быстрое изменение цвета на 360 градусов. (Я выкопал некоторый код HSL в код RGB, чтобы пройти через HSL (1,1,1) -> HSL (360,1,1))
Что касается диска, я сначала нарисовал полный сплошной кружок, используя приведенное выше, а затем второй круг серым цветом по центру, чтобы дать следующее

Так что все в порядке ... но я понял, что GDI + изолирует нас от многих хитрых совпадений, которые происходят здесь, с помощью метода FillPie
. Кроме того, FillPie
требует, чтобы вы указали ограничивающий прямоугольник для пирога, а не длину радиуса. Он также выполняет полное заполнение сегмента и не позволяет указывать только часть этого сегмента.
Вопрос:
Может ли кто-нибудь указать мне направление некоторых математических функций или дать какое-либо объяснение того, на каком форуме мне нужно будет рассчитать площадь и точки заговора для следующей «зеленой заполненной области»:
Point `c` - an x,y co-ordinate
Angle `A` - an angle from horizontal
Angle `B - an angle from horizontal where `B` - `A` == the sweep angle
Length `r` - a distance from `c`
Length `r2` - a distance from `c` where `r2` - `r` == the `height` of the segment to be filled.

Ссылки на источники по математике в порядке, но я быстро просмотрел Google и посмотрел на Wolfram Math и смог найти то, что искал. Кроме того, если бы был какой-то способ создать последовательность ограничивающих (x, y) со-или, которые могли бы быть переданы как Point[]
в Graphics.FillPolygon, это тоже было бы здорово.