Способ создания одного среза пирога выглядит следующим образом:
- переместиться в центр круга (cx, cy): "M", cx, cy
- провести линию до края, где дуга начнется (x1, y1): "L", x1, y1
- нарисоватьдуга, основанная на некоторых математических вычислениях: "A", r, r, 0, + (endAngle - startAngle> 180), 0, x2, y2
- нарисовать линию назад к серединекруга: в этом случае используется «z»;это означает переход к началу координат (cx, cy)
и срез (путь) готов.
Для создания пончика вам необходимо изменитькак сложен путь.Вам нужно иметь путь, состоящий из 2 дуг (внутри и снаружи) и 2 линий, чтобы завершить его.
Итак, сначала вам нужно найти начальную точку пути, основываясь на радиусе воображаемого пустого круга.это будет в середине пончика (с радиусом рин ).Давайте назовем координаты этой точки xx1 и yy1:
xx1 = cx + rin * Math.cos(-startAngle * rad)
yy1 = cy + rin * Math.sin(-startAngle * rad)
Вы начинаете строить путь из этой точки ( "M", xx1, yy1 );http://jsfiddle.net/EuMQ5/425/
Следующий шаг - нарисовать линию к краю круга ( "L", x1, y1 ).Оттуда вам нужно будет нарисовать внешнюю дугу ( "A", r, r, 0, + (endAngle - startAngle> 180), 0, x2, y2 ), затем еще одну линию к другому ребрувнутренней дуги ( "L", xx2, yy2 ).Чтобы получить значения для xx2 и yy2:
xx2 = cx + rin * Math.cos(-endAngle * rad)
yy2 = cy + rin * Math.sin(-endAngle * rad)
и последним шагом является завершение пути путем рисования внутренней дуги ( "A", rin, rin, 0, + (endAngle -startAngle> 180), 1, xx1, yy1 ).И теперь у вас есть кусок пончика.
Скрипка здесь.
** обновленная ссылка на скрипку