Hi Tom

Hmm, it wouldn’t hurt for it to add a limit on that value… I’ve not tried this, but maybe you can check that my maths is correct here:

[code]void Path::addCentredArc (const float centreX, const float centreY,

const float radiusX, const float radiusY,

const float rotationOfEllipse,

const float fromRadians,

float toRadians,

const bool startAsNewSubPath)

{

if (radiusX > 0.0f && radiusY > 0.0f)

{

const Point centre (centreX, centreY);

const AffineTransform rotation (AffineTransform::rotation (rotationOfEllipse, centreX, centreY));

float angle = fromRadians;

```
if (startAsNewSubPath)
startNewSubPath (centre.getPointOnCircumference (radiusX, radiusY, angle).transformedBy (rotation));
if (fromRadians < toRadians)
{
if (startAsNewSubPath)
angle += PathHelpers::ellipseAngularIncrement;
if (toRadians > angle + 2.0f * float_Pi)
toRadians = angle + 2.0f * float_Pi + std::fmod (toRadians - angle, 2.0f * float_Pi);
while (angle < toRadians)
{
lineTo (centre.getPointOnCircumference (radiusX, radiusY, angle).transformedBy (rotation));
angle += PathHelpers::ellipseAngularIncrement;
}
}
else
{
if (startAsNewSubPath)
angle -= PathHelpers::ellipseAngularIncrement;
if (toRadians < angle - 2.0f * float_Pi)
toRadians = angle - 2.0f * float_Pi - std::fmod (angle - toRadians, 2.0f * float_Pi);
while (angle > toRadians)
{
lineTo (centre.getPointOnCircumference (radiusX, radiusY, angle).transformedBy (rotation));
angle -= PathHelpers::ellipseAngularIncrement;
}
}
lineTo (centre.getPointOnCircumference (radiusX, radiusY, toRadians).transformedBy (rotation));
}
```

}[/code]