Clean up angle handling in fabmaster importer.

This commit is contained in:
Jeff Young 2022-01-18 02:37:38 +00:00
parent de31b813f3
commit 8ea66ee06e
1 changed files with 13 additions and 12 deletions

View File

@ -1051,13 +1051,14 @@ FABMASTER::GRAPHIC_ARC* FABMASTER::processArc( const FABMASTER::GRAPHIC_DATA& aD
new_arc->clockwise = ( aData.graphic_data9 != "COUNTERCLOCKWISE" ); new_arc->clockwise = ( aData.graphic_data9 != "COUNTERCLOCKWISE" );
double startangle = NormalizeAnglePos( RAD2DECIDEG( EDA_ANGLE startangle( VECTOR2I( new_arc->start_x, new_arc->start_y )
atan2( new_arc->start_y - new_arc->center_y, - VECTOR2I( new_arc->center_x, new_arc->center_y ) );
new_arc->start_x - new_arc->center_x ) ) ); EDA_ANGLE endangle( VECTOR2I( new_arc->end_x, new_arc->end_y )
double endangle = NormalizeAnglePos( RAD2DECIDEG( - VECTOR2I( new_arc->center_x, new_arc->center_y ) );
atan2( new_arc->end_y - new_arc->center_y, EDA_ANGLE angle;
new_arc->end_x - new_arc->center_x ) ) );
double angle; startangle.Normalize();
endangle.Normalize();
VECTOR2I center( new_arc->center_x, new_arc->center_y ); VECTOR2I center( new_arc->center_x, new_arc->center_y );
VECTOR2I start( new_arc->start_x, new_arc->start_y ); VECTOR2I start( new_arc->start_x, new_arc->start_y );
@ -1066,13 +1067,13 @@ FABMASTER::GRAPHIC_ARC* FABMASTER::processArc( const FABMASTER::GRAPHIC_DATA& aD
angle = endangle - startangle; angle = endangle - startangle;
if( new_arc->clockwise && angle < 0.0 ) if( new_arc->clockwise && angle < ANGLE_0 )
angle += 3600.0; angle += ANGLE_360;
if( !new_arc->clockwise && angle > 0.0 ) if( !new_arc->clockwise && angle > ANGLE_0 )
angle -= 3600.0; angle -= ANGLE_360;
if( start == end ) if( start == end )
angle = -3600.0; angle = -ANGLE_360;
RotatePoint( mid, center, -angle / 2.0 ); RotatePoint( mid, center, -angle / 2.0 );