Chord Error and Arc Resolution

Many geometric operations used in CAD conversion and processing do not support arcs. In order to perform Boolean operations or to rasterize a layout we must first convert each arc (or circle) into a collection of line segments.

arcs must be fractured into segments in order to perform geometric operations such as boolean and rasterization.

This has two main effects: a) we are now approximating the arc and b) we have to decide how many segments to use to make the approximation. The more segments, the less error but our database also gets bigger.

Ideally we know how much error we can accept; we'd like to use the minimum number of line segments necessary so that the maximum allowed error is not exceeded.

Arc Resolution vs. Chord Error

Artwork offers two separate "controls" for converting arcs into segments: Arc Resolution and Chord Error. Arc Resolution is conceptually simple but does not generally provide the best tradeoff between approximation error and database size. Chord error requires a bit more geometry but can result in a much smaller output database while keeping the approximation error to a known amount.

Arc Resolution

Arc Resolution is set in degrees: the number of degrees subtended by each segment.

arc resolution

Computing the Error

A little high school trigonometry will tell us the error. The error is a function of the radius - the bigger the radius the bigger the error:

arc resolution


Imagine that your board design has many circles (pads) of the following different radii and that you have set your arc resolution equal to 9 degrees. We compute [1-cos(9/2)] = 0.0030826 then our error for the following radii is:

circle     max    number of
radius    error   segments
(mm)      (um)
0.1        0.31      40
1.0        3.08      40
5.0       15.40      40

If the allowable tolerance for your design is 5 um then the smaller pads will be OK but the larger pad will be out of tolerance. You would have to use a smaller arc resolution. So we set the arc res down to 5 degrees. Now [1-cos(5/2)]= 0.00095177

circle     max     number of 
radius    error    segments
(mm)      (um)
0.1        0.095      72
1.0        0.95       72
5.0        4.75       72

Any problem here? Well, the main problem is that for the pads of 0.1 mm and 1.0 mm diameter 72 segments per pad is overkill. Ideally we would use less segments on the small pads and more segments as the pad diameter gets larger.

Chord Error

The chord error (also known in the past as arcsag) parameter enables the user to set the maximum allowable error; from that error value the program computes for each arc or circle exactly how many segments need to be used to meet (but not exceed) that error. This insures that the minimum number of segments is used for each arc approximation.

We only need to re-arrange our equation for the error to solve for the angle (and then we'll know how many segments are needed)

chord error


Let's continue with the first example. Our tolerance (chord error) = 5 um (0.005 mm) and we have the same three radius pads. What does our table look like now?

circle     max    theta      number of
radius    error   (deg)      segments
(mm)      (um)    
0.1        5       36.4         10
1.0        5       11.5         32
5.0        5        5.1         71

If our design had 1000 1.0 mm pads, 500 0.1 mm pads and 100 5.0 mm pads then the total vertex counts in the output would be:

                        0.1 mm    1.0 mm   5.0 mm       Total               
                        500       1000     100
Chord Error =  5 um     16K       10K      7.1K           33.1K segments
Arc Res = 5 degrees     36K       72K      7.2K          115.2K segments