2013-09-03 3 views
3

Я работаю в небольшой системе SVG, чтобы рисовать диаграммы (строка, столбец и пирог), и у меня возникают некоторые странные проблемы с круговой диаграммой ... Когда разделы на диаграмме меньше половины круга, то функция работает отлично, и все становится рисуется правильно (см рисунок ниже):Проблема с круговой диаграммой с SVG

enter image description here

Однако, когда часть пирога больше, чем половина окружности , часть рисуется неправильно, как если бы центр дуги перемещался (см. изображение ниже и обратите внимание, что красная часть является «пустым» кругом, где должны быть нарисованы части: я заполняю его красным цветом, чтобы проверить, правильно ли нарисованы части или нет):

enter image description here

Я использую функцию SVG «пути» с абсолютными параметрами, чтобы сделать каждую круговую часть. Я передаю некоторые параметры функции:

$ circleCenter_ соответствует положению X и Y центра круга. $ valPos [i] [0-1] содержит положение X и Y каждой точки треугольника, образованного центром и двумя точками на окружности (где часть должна заканчиваться).

Здесь «путь» Я использую:

<path d="M<?php echo $circleCenterX." ".$circleCenterY; ?> 
L<?php echo $valPos[$i][0][0].",".$valPos[$i][0][1] ?> 
A<?php echo $circleRadius.",".$circleRadius; ?> 0 0,1 <?php echo $valPos[$i][1][0].",".$valPos[$i][1][1]; ?> Z" 
(...) /> 

Я не понимаю, почему это работает хорошо, когда часть меньше окружности пополам, и почему кажется, что центр является " перемещается ", когда часть больше половины круга. Конечно, переменные $ circleCenter никогда не изменяются внутри функции рисования пирога ...

Любые подсказки об этом?

Заранее благодарим за ваше время и усилия! :)

ответ

0

Вам необходимо установить флаг большой дуги в 1, если процентная доля части составляет> 50%.

Смежные вопросы