Tato dokumentace popisuje výpočet plochy složitých SVG prvků. K dispozici jsou tři algoritmy.
Všechny algoritmy potřebují ID kořenového SVG prvku. V demu je to tutorial_svg Algoritmus vyhodnocuje každý prvek s třídou area-calculate.
tutorial_svg
area-calculate
<rect x="352" y="1649" width="774" height="178" fill="#90929C" class="area-calculate random-generate" areagroup="2"></rect>
Algoritmus vzorkuje každý bod v SVG a ověřuje, zda leží uvnitř polygonu. Všechny takové body se sečtou jako celková plocha sloučených polygon;.
const areaCalculator = new svgAreaCalculation(); const area = areaCalculator.lazyStupidAreaCalculation('tutorial_svg');
Algoritmus vezme vzorek bodů z každého SVG prvku a testuje, zda jsou v jiných polygonech, aby zjistil, kolik procent polygonu je zakryto jiným polygonem.
a1 * b1
a2 * b2
(8 / 10) * (a2 * b2)
a1 * b1 + 0.8 * a2 * b2
const areaCalculator = new svgAreaCalculation(); const area = areaCalculator.areaInSvgWithIntersection('tutorial_svg', numberOfRandomPoints);
Algoritmus sloučí všechny SVG prvky do jednoho či více polygonů (včetně mezer), plochu spočítá pomocí Shoelace vzorce a plochy mezer odečte.
const intersectElements = new svgAreaIntersection('tutorial_svg'); const area = intersectElements.polygonIntersectionInSvg(show, redraw, color, opacity, group);