Unify correction factor calculations
This commit is contained in:
parent
dbfa9093ab
commit
bd5eee50f4
|
@ -31,6 +31,24 @@
|
|||
#include <common.h>
|
||||
#include <geometry/geometry_utils.h>
|
||||
|
||||
static const double correction_factor[58] =
|
||||
{
|
||||
1.1547005383792515, 1.1099162641747424, 1.0823922002923940, 1.0641777724759121,
|
||||
1.0514622242382672, 1.0422171162264056, 1.0352761804100830, 1.0299278309497275,
|
||||
1.0257168632725540, 1.0223405948650293, 1.0195911582083184, 1.0173218375167883,
|
||||
1.0154266118857451, 1.0138272827109369, 1.0124651257880029, 1.0112953333155177,
|
||||
1.0102832265380361, 1.0094016211705981, 1.0086289605801528, 1.0079479708092973,
|
||||
1.0073446768656829, 1.0068076733095861, 1.0063275765801780, 1.0058966090203618,
|
||||
1.0055082795635164, 1.0051571362062028, 1.0048385723763114, 1.0045486741757732,
|
||||
1.0042840989156745, 1.0040419778191385, 1.0038198375433474, 1.0036155364690280,
|
||||
1.0034272126621453, 1.0032532411243213, 1.0030921984828256, 1.0029428336753463,
|
||||
1.0028040434931396, 1.0026748520830480, 1.0025543936921142, 1.0024418980811722,
|
||||
1.0023366781455456, 1.0022381193690537, 1.0021456708072995, 1.0020588373518127,
|
||||
1.0019771730711422, 1.0019002754608142, 1.0018277804630289, 1.0017593581404958,
|
||||
1.0016947089079804, 1.0016335602408475, 1.0015756637927993, 1.0015207928656586,
|
||||
1.0014687401828848, 1.0014193159258358, 1.0013723459979209, 1.0013276704868976,
|
||||
1.0012851422998732, 1.0012446259491854
|
||||
};
|
||||
|
||||
int GetArcToSegmentCount( int aRadius, int aErrorMax, double aArcAngleDegree )
|
||||
{
|
||||
|
@ -58,8 +76,11 @@ double GetCircletoPolyCorrectionFactor( int aSegCountforCircle )
|
|||
* therfore, to move the middle of the segment to the circle (distance = radius)
|
||||
* the correctionFactor is 1 /cos( PI/aSegCountforCircle )
|
||||
*/
|
||||
double correctionFactor = 1.0 / cos( M_PI / aSegCountforCircle );
|
||||
if( aSegCountforCircle < 6 )
|
||||
aSegCountforCircle = 6;
|
||||
if( 1 || aSegCountforCircle > 64 )
|
||||
return 1.0 / cos( M_PI / aSegCountforCircle );
|
||||
|
||||
return correctionFactor;
|
||||
return correction_factor[ aSegCountforCircle - 6 ];
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include <plotter.h>
|
||||
#include <base_struct.h>
|
||||
#include <draw_graphic_text.h>
|
||||
#include <geometry/geometry_utils.h>
|
||||
#include <trigo.h>
|
||||
#include <pcb_base_frame.h>
|
||||
#include <macros.h>
|
||||
|
@ -790,7 +791,7 @@ void PlotSolderMaskLayer( BOARD *aBoard, PLOTTER* aPlotter,
|
|||
* due to the segment approx ( 1 /cos( PI/circleToSegmentsCount )
|
||||
*/
|
||||
int circleToSegmentsCount = 32;
|
||||
double correction = 1.0 / cos( M_PI / circleToSegmentsCount );
|
||||
double correction = GetCircletoPolyCorrectionFactor( circleToSegmentsCount );
|
||||
|
||||
// Plot pads
|
||||
for( MODULE* module = aBoard->m_Modules; module; module = module->Next() )
|
||||
|
|
Loading…
Reference in New Issue