Вычислить размер круга из дуг?

Как я могу рассчитать размер круга из набора дуг?

В частности, у меня есть это определение пути SVG, которое рисует круг, и я хочу определить его размер.

<path clip-path="url(#SVGID
relative curves
c0-4.782,3.88-8.659,8.665-8.659
c4.78,0,8.66,3.877,8.66,8.659
c0,4.783-3.88,8.661-8.66,8.661

absolute curve
C338.173,65.507,334.293,61.629,334.293,56.846
)" fill="#99C44C" d="M334.293,56.846c0-4.782,3.88-8.659,8.665-8.659c4.78,0,8.66,3.877,8.66,8.659 c0,4.783-3.88,8.661-8.66,8.661C338.173,65.507,334.293,61.629,334.293,56.846"/>

К вашему сведению, круг нарисован в атрибуте 'd'. M334.293,56.846 перемещается в эту позицию x,y, тогда команды c являются кривыми.

Кривые:

Рисует кубическую кривую Безье от текущей точки до (x,y), используя (x1,y1) в качестве контрольной точки в начале кривой и (x2,y2) в качестве контрольной точки в конце кривой. C (верхний регистр) указывает, что будут следовать абсолютные координаты; c (нижний регистр) указывает, что будут следовать относительные координаты.

relative curves
c0-4.782,3.88-8.659,8.665-8.659
c4.78,0,8.66,3.877,8.66,8.659
c0,4.783-3.88,8.661-8.66,8.661

absolute curve
C338.173,65.507,334.293,61.629,334.293,56.846

person Ollie Glass    schedule 18.05.2011    source источник
comment
Это не круг. Это очень близко, но кривые Безье не могут точно передать круги.   -  person Williham Totland    schedule 18.05.2011


Ответы (1)


На данном этапе у вас есть две возможности:

Вы можете рассматривать кривую Безье как круг (что, как было сказано, неверно, это действительно выглядит как круг). Чтобы вычислить площадь, определите радиус и используйте π * r^2 как обычно.

Если вы хотите вычислить общую площадь, ограниченную элементом пути; это требует некоторого умеренного исчисления и не для слабонервных.

person Williham Totland    schedule 18.05.2011
comment
Спасибо, я предпочитаю первый вариант! Вы знаете, как определить радиус по дугам? - person Ollie Glass; 18.05.2011
comment
@OllieG: Когда этот круг нарисован; вы дважды двигаетесь относительно положительного x; оба раза перемещение 8,66 единиц. Из этого довольно ясно, что радиус действительно равен 8,66 единицы. Этому соответствует движение по оси Y; и также стабильно 8,66 ед. - person Williham Totland; 18.05.2011