KiCad PCB EDA Suite
Loading...
Searching...
No Matches
test_shape_arc.cpp File Reference
#include <qa_utils/wx_utils/unit_test_utils.h>
#include <boost/test/data/test_case.hpp>
#include <convert_basic_shapes_to_polygon.h>
#include <geometry/shape_arc.h>
#include <geometry/shape_line_chain.h>
#include <qa_utils/geometry/geometry.h>
#include <qa_utils/numeric.h>
#include "geom_test_utils.h"

Go to the source code of this file.

Classes

struct  ARC_PROPERTIES
 All properties of an arc (depending on how it's constructed, some of these might be the same as the constructor params) More...
 
struct  ARC_CENTRE_PT_ANGLE
 Info to set up an arc by centre, start point and angle. More...
 
struct  ARC_CPA_CASE
 
struct  ARC_TAN_TAN_RADIUS
 Info to set up an arc by tangent to two segments and a radius. More...
 
struct  ARC_TTR_CASE
 
struct  ARC_SEC_CASE
 
struct  ARC_PT_COLLIDE_CASE
 
struct  ARC_SEG_COLLIDE_CASE
 
struct  ARC_DATA_MM
 
struct  ARC_ARC_COLLIDE_CASE
 
struct  ARC_TO_POLYLINE_CASE
 

Functions

static void CheckArcGeom (const SHAPE_ARC &aArc, const ARC_PROPERTIES &aProps, const int aSynErrIU=1)
 Check a SHAPE_ARC against a given set of geometric properties.
 
static void CheckArc (const SHAPE_ARC &aArc, const ARC_PROPERTIES &aProps, const int aSynErrIU=1)
 Check an arcs geometry and other class functions.
 
 BOOST_AUTO_TEST_CASE (NullCtor)
 Check correct handling of filter strings (as used by WX)
 
 CheckArc (this_arc, c.m_properties)
 
this_arc ConstructFromStartEndCenter (start, end, center, cw)
 
 BOOST_CHECK_EQUAL (this_arc.GetArcMid(), c.m_expected_mid)
 
 BOOST_TEST_CONTEXT ("Test Clearance")
 
 BOOST_TEST_CONTEXT ("Test Width")
 
SHAPE_ARC arc2 (c.m_arc2.GenerateArc())
 
SHAPE_LINE_CHAIN arc1_slc (c.m_arc1.GenerateArc())
 
arc1_slc SetWidth (0)
 
SHAPE_LINE_CHAIN arc2_slc (c.m_arc2.GenerateArc())
 
 BOOST_CHECK_EQUAL (result_arc_to_arc, c.m_exp_result)
 
 BOOST_CHECK_EQUAL (result_arc_to_chain, c.m_exp_result)
 
 BOOST_CHECK_EQUAL (result_chain_to_arc, c.m_exp_result)
 
 BOOST_CHECK_EQUAL (result_chain_to_chain, c.m_exp_result)
 
 BOOST_AUTO_TEST_CASE (CollideArcToShapeLineChain)
 
 BOOST_AUTO_TEST_CASE (CollideArcToPolygonApproximation)
 
bool ArePolylineEndPointsNearCircle (const SHAPE_LINE_CHAIN &aPolyline, const VECTOR2I &aCentre, int aRad, int aTolerance)
 Predicate for checking a polyline has all the points on (near) a circle of given centre and radius.
 
bool ArePolylineMidPointsNearCircle (const SHAPE_LINE_CHAIN &aPolyline, const VECTOR2I &aCentre, int aRad, int aTolerance)
 Predicate for checking a polyline has all the segment mid points on (near) a circle of given centre and radius.
 
 BOOST_TEST_MESSAGE ("Polyline has "<< chain.PointCount()<< " points")
 
 BOOST_CHECK_EQUAL (chain.CPoint(0), c.m_geom.m_start_point)
 
 BOOST_CHECK_EQUAL (chain.CPoint(-1), this_arc.GetP1())
 
 BOOST_CHECK_PREDICATE (ArePolylineEndPointsNearCircle,(chain)(c.m_geom.m_center_point)(radius)(accuracy+epsilon))
 
 BOOST_CHECK_PREDICATE (ArePolylineMidPointsNearCircle,(chain)(c.m_geom.m_center_point)(radius)(accuracy+epsilon))
 

Variables

static const std::vector< ARC_CPA_CASEarc_cases
 
static const std::vector< ARC_TTR_CASEarc_ttr_cases
 
static const std::vector< ARC_SEC_CASEarc_sec_cases
 
VECTOR2I end = c.m_geom.m_end
 
VECTOR2I center = c.m_geom.m_center
 
bool cw = c.m_clockwise
 
SHAPE_ARC this_arc
 
static const std::vector< ARC_PT_COLLIDE_CASEarc_pt_collide_cases
 
static const std::vector< ARC_SEG_COLLIDE_CASEarc_seg_collide_cases
 
static const std::vector< ARC_ARC_COLLIDE_CASEarc_arc_collide_cases
 
int actual = 0
 
VECTOR2I location
 
SHAPEarc1_sh = &arc1
 
SHAPEarc2_sh = &arc2
 
SHAPEarc1_slc_sh = &arc1_slc
 
SHAPEarc2_slc_sh = &arc2_slc
 
bool result_arc_to_arc
 
int clearance = pcbIUScale.mmToIU( c.m_clearance ) + ( arc2.GetWidth() / 2 )
 
bool result_arc_to_chain
 
bool result_chain_to_arc
 
bool result_chain_to_chain
 
const std::vector< ARC_TO_POLYLINE_CASEArcToPolyline_cases
 
const int accuracy = 100
 
const int epsilon = 1
 
const SHAPE_LINE_CHAIN chain = this_arc.ConvertToPolyline( accuracy )
 
int radius = ( c.m_geom.m_center_point - c.m_geom.m_start_point ).EuclideanNorm()
 

Function Documentation

◆ arc1_slc()

SHAPE_LINE_CHAIN arc1_slc ( c.m_arc1.  GenerateArc())

◆ arc2()

SHAPE_ARC arc2 ( c.m_arc2.  GenerateArc())

◆ arc2_slc()

SHAPE_LINE_CHAIN arc2_slc ( c.m_arc2.  GenerateArc())

◆ ArePolylineEndPointsNearCircle()

bool ArePolylineEndPointsNearCircle ( const SHAPE_LINE_CHAIN aPolyline,
const VECTOR2I aCentre,
int  aRad,
int  aTolerance 
)

Predicate for checking a polyline has all the points on (near) a circle of given centre and radius.

Parameters
aPolylinethe polyline to check
aCentrethe circle centre
aRadthe circle radius
aTolerancethe tolerance for the endpoint-centre distance
Returns
true if predicate met

Definition at line 908 of file test_shape_arc.cpp.

References GEOM_TEST::ArePointsNearCircle(), SHAPE_LINE_CHAIN::CPoint(), and SHAPE_LINE_CHAIN::PointCount().

◆ ArePolylineMidPointsNearCircle()

bool ArePolylineMidPointsNearCircle ( const SHAPE_LINE_CHAIN aPolyline,
const VECTOR2I aCentre,
int  aRad,
int  aTolerance 
)

Predicate for checking a polyline has all the segment mid points on (near) a circle of given centre and radius.

Parameters
aPolylinethe polyline to check
aCentrethe circle centre
aRadthe circle radius
aTolEndsthe tolerance for the midpoint-centre distance
Returns
true if predicate met

Definition at line 931 of file test_shape_arc.cpp.

References GEOM_TEST::ArePointsNearCircle(), SHAPE_LINE_CHAIN::CPoint(), and SHAPE_LINE_CHAIN::PointCount().

◆ BOOST_AUTO_TEST_CASE() [1/3]

◆ BOOST_AUTO_TEST_CASE() [2/3]

BOOST_AUTO_TEST_CASE ( CollideArcToShapeLineChain  )

Definition at line 825 of file test_shape_arc.cpp.

References BOOST_CHECK_EQUAL(), SHAPE_ARC::Collide(), and SHAPE::Collide().

◆ BOOST_AUTO_TEST_CASE() [3/3]

BOOST_AUTO_TEST_CASE ( NullCtor  )

Check correct handling of filter strings (as used by WX)

Definition at line 137 of file test_shape_arc.cpp.

References BOOST_CHECK_EQUAL(), and CheckArc().

◆ BOOST_CHECK_EQUAL() [1/7]

BOOST_CHECK_EQUAL ( chain.  CPoint-1,
this_arc.  GetP1() 
)

◆ BOOST_CHECK_EQUAL() [2/7]

BOOST_CHECK_EQUAL ( chain.  CPoint0,
c.m_geom.  m_start_point 
)

◆ BOOST_CHECK_EQUAL() [3/7]

BOOST_CHECK_EQUAL ( result_arc_to_arc  ,
c.  m_exp_result 
)

◆ BOOST_CHECK_EQUAL() [4/7]

BOOST_CHECK_EQUAL ( result_arc_to_chain  ,
c.  m_exp_result 
)

◆ BOOST_CHECK_EQUAL() [5/7]

BOOST_CHECK_EQUAL ( result_chain_to_arc  ,
c.  m_exp_result 
)

◆ BOOST_CHECK_EQUAL() [6/7]

BOOST_CHECK_EQUAL ( result_chain_to_chain  ,
c.  m_exp_result 
)

◆ BOOST_CHECK_EQUAL() [7/7]

BOOST_CHECK_EQUAL ( this_arc.  GetArcMid(),
c.  m_expected_mid 
)

◆ BOOST_CHECK_PREDICATE() [1/2]

◆ BOOST_CHECK_PREDICATE() [2/2]

BOOST_CHECK_PREDICATE ( ArePolylineMidPointsNearCircle  ,
(chain)(c.m_geom.m_center_point)(radius)(accuracy+epsilon  
)

◆ BOOST_TEST_CONTEXT() [1/2]

◆ BOOST_TEST_CONTEXT() [2/2]

BOOST_TEST_CONTEXT ( "Test Width"  )

Definition at line 604 of file test_shape_arc.cpp.

References BOOST_CHECK_EQUAL().

◆ BOOST_TEST_MESSAGE()

◆ CheckArc() [1/2]

static void CheckArc ( const SHAPE_ARC aArc,
const ARC_PROPERTIES aProps,
const int  aSynErrIU = 1 
)
static

Check an arcs geometry and other class functions.

Parameters
aArcArc to test
aPropsProperties to test against
aSynErrIUPermitted error for synthetic points and dimensions (currently radius and center)

Should have identical geom props

Definition at line 116 of file test_shape_arc.cpp.

References BOOST_CHECK_EQUAL(), BOOST_REQUIRE(), CheckArcGeom(), SHAPE_ARC::Clone(), and SH_ARC.

Referenced by BOOST_AUTO_TEST_CASE().

◆ CheckArc() [2/2]

CheckArc ( this_arc  ,
c.  m_properties 
)

◆ CheckArcGeom()

static void CheckArcGeom ( const SHAPE_ARC aArc,
const ARC_PROPERTIES aProps,
const int  aSynErrIU = 1 
)
static

Check a SHAPE_ARC against a given set of geometric properties.

Parameters
aArcArc to test
aPropsProperties to test against
aSynErrIUPermitted error for synthetic points and dimensions (currently radius and center)

Check the chord agrees

All arcs are solid

Collisions will be checked elsewhere.

Definition at line 61 of file test_shape_arc.cpp.

References EDA_ANGLE::AsDegrees(), SHAPE_ARC::BBox(), BOOST_CHECK_EQUAL(), BOOST_CHECK_PREDICATE(), SHAPE_ARC::GetCenter(), SHAPE_ARC::GetCentralAngle(), SHAPE_ARC::GetChord(), SHAPE_ARC::GetEndAngle(), SHAPE_ARC::GetP1(), SHAPE_ARC::GetRadius(), SHAPE_ARC::GetStartAngle(), SHAPE_ARC::IsSolid(), ARC_PROPERTIES::m_bbox, ARC_PROPERTIES::m_center_angle, ARC_PROPERTIES::m_center_point, ARC_PROPERTIES::m_end_angle, ARC_PROPERTIES::m_end_point, ARC_PROPERTIES::m_radius, ARC_PROPERTIES::m_start_angle, and ARC_PROPERTIES::m_start_point.

Referenced by CheckArc().

◆ ConstructFromStartEndCenter()

this_arc ConstructFromStartEndCenter ( start  ,
end  ,
center  ,
cw   
)

◆ SetWidth()

arc2_slc SetWidth ( )

Variable Documentation

◆ accuracy

◆ actual

◆ arc1_sh

SHAPE* arc1_sh = &arc1

Definition at line 795 of file test_shape_arc.cpp.

◆ arc1_slc_sh

SHAPE* arc1_slc_sh = &arc1_slc

Definition at line 797 of file test_shape_arc.cpp.

◆ arc2_sh

SHAPE* arc2_sh = &arc2

Definition at line 796 of file test_shape_arc.cpp.

◆ arc2_slc_sh

SHAPE* arc2_slc_sh = &arc2_slc

Definition at line 798 of file test_shape_arc.cpp.

◆ arc_arc_collide_cases

const std::vector<ARC_ARC_COLLIDE_CASE> arc_arc_collide_cases
static

Definition at line 701 of file test_shape_arc.cpp.

◆ arc_cases

const std::vector<ARC_CPA_CASE> arc_cases
static

Definition at line 183 of file test_shape_arc.cpp.

◆ arc_pt_collide_cases

const std::vector<ARC_PT_COLLIDE_CASE> arc_pt_collide_cases
static

Definition at line 534 of file test_shape_arc.cpp.

◆ arc_sec_cases

const std::vector<ARC_SEC_CASE> arc_sec_cases
static
Initial value:
= {
{ "180 deg, clockwise", { { 100, 0 }, { 0, 0 }, { 50, 0 } }, true, { 50, -50 } },
{ "180 deg, anticlockwise", { { 100, 0 }, { 0, 0 }, { 50, 0 } }, false, { 50, 50 } },
{ "180 deg flipped, clockwise", { { 0, 0 }, { 100, 0 }, { 50, 0 } }, true, { 50, 50 } },
{ "180 deg flipped, anticlockwise", { { 0, 0 }, { 100, 0 }, { 50, 0 } }, false, { 50, -50 } },
{ "90 deg, clockwise", { { -100, 0 }, { 0, 100 }, { 0, 0 } }, true, { -71, 71 } },
{ "90 deg, anticlockwise", { { -100, 0 }, { 0, 100 }, { 0, 0 } }, false, { 71, -71 } },
}

Definition at line 500 of file test_shape_arc.cpp.

◆ arc_seg_collide_cases

const std::vector<ARC_SEG_COLLIDE_CASE> arc_seg_collide_cases
static
Initial value:
= {
{ "0 deg ", { { 0, 0 }, { 100, 0 }, 270.0 }, 0, { { 100, 0 }, { 50, 0 } }, true, 0 },
{ "90 deg ", { { 0, 0 }, { 100, 0 }, 270.0 }, 0, { { 0, 100 }, { 0, 50 } }, true, 0 },
{ "180 deg ", { { 0, 0 }, { 100, 0 }, 270.0 }, 0, { { -100, 0 }, { -50, 0 } }, true, 0 },
{ "270 deg ", { { 0, 0 }, { 100, 0 }, 270.0 }, 0, { { 0, -100 }, { 0, -50 } }, true, 0 },
{ "45 deg ", { { 0, 0 }, { 100, 0 }, 270.0 }, 0, { { 71, 71 }, { 35, 35 } }, true, 0 },
{ "-45 deg ", { { 0, 0 }, { 100, 0 }, 270.0 }, 0, { { 71, -71 }, { 35, -35 } }, false, -1 },
{ "seg inside arc start", { { 0, 0 }, { 71, -71 }, 90.0 },
10, { { 90, 0 }, { -35, 0 } }, true, 10 },
{ "seg inside arc end", { { 0, 0 }, { 71, -71 }, 90.0 },
10, { { -35, 0 }, { 90, 0 } }, true, 10 },
{ "large diameter arc", { { 172367922, 82282076 }, { 162530000, 92120000 }, -45.0 },
433300, { { 162096732, 92331236 }, { 162096732, 78253268 } }, true, 433268 },
}

Definition at line 627 of file test_shape_arc.cpp.

◆ arc_ttr_cases

const std::vector<ARC_TTR_CASE> arc_ttr_cases
static

Definition at line 364 of file test_shape_arc.cpp.

◆ ArcToPolyline_cases

const std::vector<ARC_TO_POLYLINE_CASE> ArcToPolyline_cases

Definition at line 946 of file test_shape_arc.cpp.

◆ center

VECTOR2I center = c.m_geom.m_center

Definition at line 514 of file test_shape_arc.cpp.

Referenced by DXF_IMPORT_PLUGIN::addArc(), GRAPHICS_IMPORTER_LIB_SYMBOL::AddArc(), GRAPHICS_IMPORTER_SCH::AddArc(), GRAPHICS_IMPORTER_PCBNEW::AddArc(), DXF_IMPORT_PLUGIN::addCircle(), DXF_IMPORT_PLUGIN::addEllipse(), RENDER_3D_OPENGL::addObjectTriangles(), FEATURES_MANAGER::AddPadShape(), DXF_IMPORT_PLUGIN::addPoint(), FEATURES_MANAGER::AddShape(), approximateLineChainWithArcs(), AREGION6::AREGION6(), BOOST_AUTO_TEST_CASE(), ZONE_FILLER::buildThermalSpokes(), CalcArcCenter(), CircleCenterFrom3Points(), SHAPE_LINE_CHAIN::ClosestSegmentsFast(), SHAPE_ARC::Collide(), PCB_GRID_HELPER::computeAnchors(), computeCenter(), SHAPE_ARC::ConstructFromStartEndAngle(), ConvertArcCenter(), AM_PRIMITIVE::ConvertBasicShapeToPolygon(), ALTIUM_PCB::ConvertFills6ToBoardItem(), ALTIUM_PCB::ConvertFills6ToBoardItemOnLayer(), ALTIUM_PCB::ConvertFills6ToFootprintItem(), ALTIUM_PCB::ConvertFills6ToFootprintItemOnLayer(), AM_PRIMITIVE::ConvertShapeToPolygon(), SCH_IO_ALTIUM::CreateAliases(), PCB_IO_EASYEDAPRO_PARSER::createPAD(), BOARD_ADAPTER::createTrackWithMargin(), doConvertOutlineToPolygon(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::draw(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepTangent(), SIM_PLOT_TAB::EnableCursor(), GBR_TO_PCB_EXPORTER::export_flashed_copper_item(), GBR_TO_PCB_EXPORTER::export_non_copper_item(), BOX2< Vec >::FarthestPointTo(), ZONE_FILLER::Fill(), fillArcGBRITEM(), fillArcPOLY(), EXCELLON_IMAGE::FinishRouteCommand(), GENCAD_EXPORTER::FootprintWriteShape(), PCB_IO_KICAD_SEXPR::format(), PCB_ARC::GetAngle(), SELECTION::GetCenter(), SHAPE_ARC::GetCentralAngle(), SHAPE_ARC::GetEndAngle(), PCB_ARC::GetPosition(), PCB_ARC::GetRadius(), GRAPH_CONNECTION::GetShapes(), SHAPE_ARC::GetStartAngle(), PCB_ARC::HitTest(), DXF_IMPORT_PLUGIN::insertArc(), RENDER_3D_RAYTRACE_BASE::insertHole(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadArc(), SCH_IO_EAGLE::loadCircle(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadCircle(), PCB_IO_EAGLE::loadPlain(), PCB_IO_EAGLE::loadPolygon(), SCH_IO_EAGLE::loadRectangle(), PCB_IO_EAGLE::loadSignals(), SCH_IO_EAGLE::loadSymbolCircle(), SCH_IO_EAGLE::loadSymbolRectangle(), SCH_IO_EAGLE::loadSymbolWire(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadText(), SCH_IO_EAGLE::loadWire(), CIRCLE_GEOM_SYNCER::OnCenterPointChange(), CIRCLE_GEOM_SYNCER::OnCenterRadiusChange(), RECTANGLE_GEOM_SYNCER::OnCenterSizeChange(), ARC_GEOM_SYNCER::OnCSAChange(), KIGFX::WX_VIEW_CONTROLS::onScroll(), PCB_IO_EAGLE::packageCircle(), PCB_IO_EAGLE::packagePolygon(), PCB_IO_EAGLE::packageRectangle(), PCB_IO_EAGLE::packageWire(), COMMON_TOOLS::PanControl(), SCH_IO_ALTIUM::ParseArc(), PCB_IO_EASYEDAPRO_PARSER::ParseBoard(), SCH_IO_ALTIUM::ParseCircle(), PCB_IO_EASYEDAPRO_PARSER::ParseContour(), SCH_IO_ALTIUM::ParseImage(), SCH_IO_ALTIUM::ParsePieChart(), PCB_IO_EASYEDAPRO_PARSER::ParsePoly(), SCH_IO_ALTIUM::ParseRoundRectangle(), SCH_IO_KICAD_SEXPR_PARSER::parseSchCircle(), SCH_EASYEDAPRO_PARSER::ParseSchematic(), SCH_EASYEDAPRO_PARSER::ParseSymbol(), SCH_IO_KICAD_SEXPR_PARSER::parseSymbolArc(), SCH_IO_KICAD_SEXPR_PARSER::parseSymbolCircle(), SCH_EASYEDA_PARSER::ParseSymbolShapes(), PCB_IO_EASYEDA_PARSER::ParseToBoardItemContainer(), BE_SHAPE_POINT::Paths(), CU_SHAPE_CIRCLE::Paths(), SCH_SHAPE::Plot(), GERBER_PLOTTER::plotArc(), SCH_SHAPE::Print(), FABMASTER::processArc(), FABMASTER::processCircle(), Ref1CalcArcCenter(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), PLOTTER::segmentAsOval(), segmentIntersectsArc(), SegmentIntersectsBoard(), segmentIntersectsCircle(), SHAPE_LINE_CHAIN::SelfIntersectingWithArcs(), SHAPE_ARC::SHAPE_ARC(), STROKE_PARAMS::Stroke(), PLOTTER::ThickArc(), PNS::tightenSegment(), CREEPAGE_GRAPH::TransformEdgeToCreepShapes(), CIRCLE_GEOM_SYNCER::updateCenterPoint(), CIRCLE_GEOM_SYNCER::updateCenterRadius(), ARC_GEOM_SYNCER::updateCSA(), PCB_DIM_RADIAL::updateGeometry(), PCB_DIM_CENTER::updateGeometry(), EDA_CIRCLE_POINT_EDIT_BEHAVIOR::UpdateItem(), ARC_POINT_EDIT_BEHAVIOR::UpdateItem(), PAD_POINT_EDIT_BEHAVIOR::UpdateItem(), ARC_GEOM_SYNCER::Validate(), and RATSNEST_VIEW_ITEM::ViewDraw().

◆ chain

◆ clearance

clearance = pcbIUScale.mmToIU( c.m_clearance ) + ( arc2.GetWidth() / 2 )

Definition at line 805 of file test_shape_arc.cpp.

Referenced by ZONE_FILLER::addHatchFillTypeOnZone(), DRC_TEST_PROVIDER_SOLDER_MASK::addItemToRTrees(), BOOST_AUTO_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), PNS::DP_MEANDER_PLACER::CheckFit(), PNS::MEANDER_PLACER::CheckFit(), collideArc2Arc(), collideShapes(), PNS::ITEM::collideSimple(), IEC60664::ComputeClearanceDistance(), BOARD_ADAPTER::createPadWithMargin(), KIGFX::PCB_PAINTER::draw(), DRAWING_TOOL::DrawVia(), DRC_ENGINE::EvalRules(), DSN::SPECCTRA_DB::exportNETCLASS(), DSN::SPECCTRA_DB::FromBOARD(), GenerateLayerPoly(), PNS::SHOVE::getClearance(), PAD::GetMsgPanelInfo(), PCB_TRACK::GetMsgPanelInfo(), PCB_VIA::GetMsgPanelInfo(), ZONE::GetMsgPanelInfo(), BOARD_DESIGN_SETTINGS::GetSmallestClearanceValue(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectDRCError(), CADSTAR_PCB_ARCHIVE_LOADER::loadTemplates(), PCB_IO_KICAD_LEGACY::loadZONE_CONTAINER(), PNS::ROUTER::markViolations(), PNS::ROUTER::movePlacing(), PNS::NODE::NearestObstacle(), PNS::SHOVE::onCollidingVia(), PNS::SHOVE::onReverseCollidingVia(), GPCB_FPL_CACHE::parseFOOTPRINT(), ALTIUM_PCB::ParsePolygons6Data(), PNS::DIFF_PAIR_PLACER::propagateDpHeadForces(), PNS::VIA::PushoutForce(), PCB_TUNING_PATTERN::resetToBaseline(), PNS::LINE_PLACER::rhMarkObstacles(), PNS::SHOVE::shoveLineFromLoneVia(), PNS::SHOVE::ShoveObstacleLine(), PNS::WALKAROUND::singleStep(), DRC_INTERACTIVE_COURTYARD_CLEARANCE::testCourtyardClearances(), DRC_TEST_PROVIDER_COURTYARD_CLEARANCE::testCourtyardClearances(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstItem(), DRC_TEST_PROVIDER_SOLDER_MASK::testItemAgainstItems(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZone(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstZones(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testKnockoutTextAgainstZone(), DRC_TEST_PROVIDER_SOLDER_MASK::testMaskItemAgainstZones(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testShapeLineChain(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testSingleLayerItemAgainstItem(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testZoneLayer(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testZonesToZones(), FOOTPRINT::TransformPadsToPolySet(), PNS::ROUTER::updateView(), and PAD::ViewBBox().

◆ cw

◆ end

VECTOR2I end = c.m_geom.m_end

Definition at line 513 of file test_shape_arc.cpp.

Referenced by GRAPHICS_IMPORTER_LIB_SYMBOL::AddArc(), GRAPHICS_IMPORTER_SCH::AddArc(), GRAPHICS_IMPORTER_PCBNEW::AddArc(), GERBER_JOBFILE_WRITER::addJSONMaterialStackup(), SYMBOL_LIBS::AddLibrary(), DXF_IMPORT_PLUGIN::addLine(), RENDER_3D_OPENGL::addObjectTriangles(), CREEPAGE_GRAPH::Addshape(), EC_CONVERGING::Apply(), PS_PLOTTER::Arc(), PDF_PLOTTER::Arc(), SVG_PLOTTER::Arc(), SVG_PLOTTER::BezierCurve(), KIGFX::OPENGL_GAL::BitmapText(), BOOST_AUTO_TEST_CASE(), BVH_PBRT::buildUpperSAH(), CalcArcCenter(), AR_AUTOPLACER::calculateKeepOutArea(), BASE_SET::compare(), PCB_GRID_HELPER::computeAnchors(), KIGFX::OPENGL_GAL::computeBitmapTextSize(), computeCenter(), AR_MATRIX::ComputeMatrixSize(), AR_AUTOPLACER::computePlacementRatsnestCost(), TEARDROP_MANAGER::computeTeardropPolygon(), ConnectBoardShapes(), STRING_ANY_MAP::contains(), GERBER_DRAW_ITEM::ConvertSegmentToPolygon(), AM_PRIMITIVE::ConvertShapeToPolygon(), GERBER_WRITER::createDrillFile(), base64::decode(), KIGFX::CAIRO_GAL_BASE::DeleteGroup(), TOOL_MANAGER::dispatchInternal(), ALIGN_DISTRIBUTE_TOOL::doDistributeGaps(), KIGFX::DS_PAINTER::draw(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::draw(), KIGFX::DS_PAINTER::DrawBorder(), D_CODE::DrawFlashedShape(), KIGFX::OPENGL_GAL::drawPolyline(), KIGFX::OPENGL_GAL::drawSegmentChain(), SVG_IMPORT_PLUGIN::DrawSplinePath(), EC_CONVERGING::EC_CONVERGING(), ARC_POINT_EDIT_BEHAVIOR::editArcMidKeepCenter(), base64::encode(), MULTIVECTOR< T, FIRST_TYPE_VAL, LAST_TYPE_VAL >::end(), executeBenchMark(), fillArcPOLY(), TEARDROP_MANAGER::findAnchorPointsOnTrack(), PNS::NODE::FindJoint(), SYMBOL_LIBS::FindLibrary(), SYMBOL_LIBS::FindLibraryByFullFileName(), AUTOPLACER::fitFieldsBetweenWires(), DXF_PLOTTER::FlashPadRect(), FOOTPRINT::FootprintNeedsUpdate(), GENCAD_EXPORTER::FootprintWriteShape(), GatherInterpolatedCubicBezierCurve(), DANGLING_END_ITEM_HELPER::get_lower_pos(), DANGLING_END_ITEM_HELPER::get_lower_type(), SCH_SHEET::GetBodyBoundingBox(), SCH_LABEL::GetBodyBoundingBox(), SCH_FIELD::GetBoundingBox(), SCH_TEXT::GetBoundingBox(), GERBER_DRAW_ITEM::GetBoundingBox(), BOX2< Vec >::GetBoundingBoxRotated(), SYMBOL_LIBS::GetCacheLibrary(), PCB_NET_INSPECTOR_PANEL::DATA_MODEL::GetChildren(), AUTOPLACER::getCollidingSides(), SCH_MOVE_TOOL::getConnectedDragItems(), GetDeltasForDistributeByGaps(), BOX2I_MINMAX::GetDiameter(), PCB_TABLE::GetEffectiveShape(), SCH_LABEL_BASE::GetIntersheetRefs(), PCB_VIA::GetLayerSet(), KIFONT::FONT::getLinePositions(), PCB_DIMENSION_BASE::GetMsgPanelInfo(), SCH_SHEET_LIST::GetMultiUnitSymbols(), DIALOG_MIGRATE_BUSES::getProposedLabels(), PNS::MEANDER_PLACER_BASE::GetTotalPadToDieLength(), GRCSegm(), hash_fp_item(), PCB_VIA::HasValidLayerPair(), PCB_NET_INSPECTOR_PANEL::highlightSelectedNets(), DS_DRAW_ITEM_RECT::HitTest(), GERBER_DRAW_ITEM::HitTest(), BVH_PBRT::HLBVHBuild(), FEATURES_MANAGER::InitFeatureList(), RENDER_3D_RAYTRACE_BASE::insertHole(), DXF_IMPORT_PLUGIN::insertLine(), DXF_IMPORT_PLUGIN::insertSpline(), InterceptsNegativeX(), InterceptsPositiveX(), PCB_VIA::IsOnLayer(), IsUTF8(), KIID::KIID(), PNS::TOPOLOGY::LeadingRatLine(), CADSTAR_SCH_ARCHIVE_LOADER::loadNets(), PCB_IO_EAGLE::loadPlain(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadRect(), SCH_IO_EAGLE::loadRectangle(), PCB_IO_EAGLE::loadSignals(), SCH_IO_EAGLE::loadSymbolRectangle(), SCH_IO_EAGLE::loadSymbolWire(), SCH_IO_EAGLE::loadWire(), SCH_IO_KICAD_LEGACY::loadWire(), FABMASTER::loadZone(), KIGFX::BUILTIN_FONT::LookupGlyph(), PNS::LINE_PLACER::makeVia(), makeWireFromChain(), MARKER_BASE::MARKER_BASE(), BOX2< Vec >::Merge(), GRAPHICS_CLEANER::mergeRects(), PNS::TOPOLOGY::NearestUnconnectedAnchorPoint(), KICAD_MANAGER_CONTROL::NewFromTemplate(), SCH_TABLE::Normalize(), PCB_SHAPE::Normalize(), PCB_TABLE::Normalize(), PCB_SHAPE::NormalizeForCompare(), SHAPE_LINE_CHAIN::OffsetLine(), TEXTENTRY_TRICKS::OnCharHook(), GRID_TRICKS::onKeyDown(), PGM_KICAD::OnPgmInit(), MULTIVECTOR< T, FIRST_TYPE_VAL, LAST_TYPE_VAL >::ITERATOR_BASE< ITEM_TYPE, ITEM_CONTAINER, ITEM_CONTAINER_IT >::operator++(), BASE_SET::operator<(), PADSTACK::DRILL_PROPS::operator==(), PNS::LINE_PLACER::optimizeTailHeadTransition(), PCB_IO_EAGLE::packageRectangle(), PCB_IO_EAGLE::packageWire(), PCAD2KICAD::PCAD_ARC::Parse(), PCB_IO_EASYEDAPRO_PARSER::ParseBoard(), NET_SETTINGS::ParseBusVector(), PNS_LOG_FILE::parseCommonPnsProps(), PCB_IO_EASYEDAPRO_PARSER::ParseContour(), EASYEDA_PARSER_BASE::ParseLineChains(), LIB_TABLE::ParseOptions(), PCB_IO_EASYEDAPRO_PARSER::ParsePoly(), SCH_IO_ALTIUM::ParsePortHelper(), SCH_EASYEDAPRO_PARSER::ParseSchematic(), SCH_IO_KICAD_SEXPR_PARSER::parseSchTextBoxContent(), SCH_EASYEDAPRO_PARSER::ParseSymbol(), SCH_IO_KICAD_SEXPR_PARSER::parseSymbolTextBox(), PCB_IO_EASYEDA_PARSER::ParseToBoardItemContainer(), parseVersionString(), SCH_EDITOR_CONTROL::Paste(), CU_SHAPE_SEGMENT::Paths(), SCH_PIN::PinDrawOrient(), SCH_SHAPE::Plot(), SCH_TABLE::Plot(), GERBER_PLOTTER::plotArc(), PLOTTER::PlotImage(), PS_PLOTTER::PlotImage(), SCH_PLOTTER::plotOneSheetPDF(), SCH_PLOTTER::plotOneSheetPS(), SCH_PLOTTER::plotOneSheetSVG(), BRDITEMS_PLOTTER::PlotTableBorders(), BRDITEMS_PLOTTER::PlotText(), PLOTTER::polyArc(), SCH_BUS_ENTRY_BASE::Print(), SCH_LINE::Print(), SCH_SHAPE::Print(), SCH_TABLE::Print(), PrintableCharCount(), FABMASTER::processArc(), AM_PARAM::ReadParamFromAmDef(), IbisParser::readWord(), BVH_PBRT::recursiveBuild(), SYMBOL_LIBS::ReloadLibrary(), SHAPE_LINE_CHAIN::RemoveShape(), KIGFX::PCB_PAINTER::renderNetNameForSegment(), SIM_PLOT_TAB::ResetScales(), PCB_TUNING_PATTERN::resetToBaseline(), PCB_VIA::SanitizeLayers(), PLOTTER::segmentAsOval(), DIALOG_RENDER_JOB::setSelectedFormat(), SHAPE_ARC::SHAPE_ARC(), TOOL_MANAGER::ShutdownTool(), SCH_SHEET_LIST::SortByPageNumbers(), SCH_PIN_TABLE_DATA_MODEL::SortRows(), STROKE_PARAMS::Stroke(), LSEQ::TestLayers(), AR_AUTOPLACER::testRectangle(), CONNECTIVITY_DATA::TestTrackEndpointDangling(), PLOTTER::ThickArc(), PLOTTER::ThickSegment(), GERBER_PLOTTER::ThickSegment(), HPGL_PLOTTER::ThickSegment(), FABMASTER::traceIsOpen(), KIFONT::STROKE_GLYPH::Transform(), SCH_SHEET_LIST::TrimToPageNumbers(), PNS::MEANDER_PLACER_BASE::tuneLineLength(), SCH_SHEET_PATH::UpdateAllScreenReferences(), EDA_CIRCLE_POINT_EDIT_BEHAVIOR::UpdateItem(), ARC_POINT_EDIT_BEHAVIOR::UpdateItem(), PAD_POINT_EDIT_BEHAVIOR::UpdateItem(), MULTIVECTOR< T, FIRST_TYPE_VAL, LAST_TYPE_VAL >::ITERATOR_BASE< ITEM_TYPE, ITEM_CONTAINER, ITEM_CONTAINER_IT >::validate(), ARC_GEOM_SYNCER::Validate(), KIGFX::PREVIEW::RULER_ITEM::ViewDraw(), KIGFX::PREVIEW::TWO_POINT_ASSISTANT::ViewDraw(), KIGFX::ORIGIN_VIEWITEM::ViewDraw(), PCB_VIA::ViewGetLayers(), PCB_TRACK::ViewGetLOD(), PCB_VIA::ViewGetLOD(), GERBER_PLOTTER::writeApertureList(), and HYPERLYNX_EXPORTER::writeNetObjects().

◆ epsilon

const int epsilon = 1

Definition at line 993 of file test_shape_arc.cpp.

Referenced by BOOST_AUTO_TEST_CASE().

◆ location

◆ radius

int radius = ( c.m_geom.m_center_point - c.m_geom.m_start_point ).EuclideanNorm()

Definition at line 1008 of file test_shape_arc.cpp.

Referenced by GRAPHICS_IMPORTER_LIB_SYMBOL::AddArc(), GRAPHICS_IMPORTER_SCH::AddArc(), GRAPHICS_IMPORTER_PCBNEW::AddArc(), DXF_IMPORT_PLUGIN::addEllipse(), RENDER_3D_OPENGL::addObjectTriangles(), BOARD_ADAPTER::addShape(), altium_parse_polygons(), AltiumGetEllipticalPos(), APAD6::APAD6(), EC_CIRCLE::Apply(), approximateLineChainWithArcs(), PNS_LOG_VIEWER_OVERLAY::Arc(), PLOTTER::Arc(), AREGION6::AREGION6(), BOOST_AUTO_TEST_CASE(), ZONE_FILLER::buildCopperItemClearances(), BuildCornersList_S_Shape(), BOARD_ADAPTER::buildPadOutlineAsSegments(), EDA_SHAPE::calcEdit(), SHAPE_POLY_SET::chamferFilletPolygon(), HPGL_PLOTTER::Circle(), DXF_PLOTTER::Circle(), PS_PLOTTER::Circle(), PDF_PLOTTER::Circle(), SVG_PLOTTER::Circle(), SHAPE_LINE_CHAIN::ClosestSegmentsFast(), SHAPE_ARC::Collide(), EDA_SHAPE::computeArcBBox(), TEARDROP_MANAGER::computeCurvedForRoundShape(), AM_PRIMITIVE::ConvertShapeToPolygon(), D_CODE::ConvertShapeToPolygon(), CornerListToPolygon(), GENCAD_EXPORTER::CreatePadsShapesSection(), BOARD_ADAPTER::createTrackWithMargin(), doConvertOutlineToPolygon(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::draw(), KIGFX::SCH_PAINTER::drawAnchor(), KIGFX::SCH_PAINTER::drawDanglingIndicator(), D_CODE::DrawFlashedShape(), KIGFX::GERBVIEW_PAINTER::drawFlashedShape(), DrawHalfOpenCylinder(), DrawSegment(), KIGFX::CAIRO_GAL_BASE::DrawSegment(), ARC_POINT_EDIT_BEHAVIOR::editArcEndpointKeepCenter(), ARC_POINT_EDIT_BEHAVIOR::editArcMidKeepCenter(), GBR_TO_PCB_EXPORTER::export_flashed_copper_item(), GBR_TO_PCB_EXPORTER::export_non_copper_item(), fillArcPOLY(), TEARDROP_MANAGER::findAnchorPointsOnTrack(), EXCELLON_IMAGE::FinishRouteCommand(), HPGL_PLOTTER::FlashPadCircle(), GENCAD_EXPORTER::FootprintWriteShape(), gen_arc(), GERBER_DRAW_ITEM::GetBoundingBox(), PCB_TRACK::GetBoundingBox(), PCB_VIA::GetBoundingBox(), DRAWING_TOOL::getClampedRadiusEnd(), SHAPE_ARC::GetLength(), PCB_TRACK::GetMsgPanelInfo(), EDA_SHAPE::GetRadius(), GRCSegm(), EDA_SHAPE::hitTest(), PCB_TARGET::HitTest(), PCB_ARC::HitTest(), GERBER_DRAW_ITEM::HitTest(), DXF_IMPORT_PLUGIN::insertArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::loadCircle(), PCB_IO_EAGLE::loadPlain(), PCB_IO_EAGLE::loadPolygon(), PCB_IO_EAGLE::loadSignals(), SCH_IO_EAGLE::loadSymbolWire(), PNS::HOLE::MakeCircularHole(), DSN::SPECCTRA_DB::makeIMAGE(), PNS::MEANDER_SHAPE::makeMiterShape(), DSN::SPECCTRA_DB::makePADSTACK(), PLOTTER::Marker(), PLOTTER::markerBackSlash(), PLOTTER::markerCircle(), PLOTTER::markerHBar(), PLOTTER::markerLozenge(), PLOTTER::markerSlash(), PLOTTER::markerSquare(), PLOTTER::markerVBar(), PANEL_CABLE_SIZE::OnAmpacityChange(), CIRCLE_GEOM_SYNCER::OnCenterRadiusChange(), PCB_IO_EAGLE::packageCircle(), PCB_IO_EAGLE::packagePolygon(), ALTIUM_PCB::Parse(), GPCB_FPL_CACHE::parseFOOTPRINT(), SCH_IO_ALTIUM::ParseRoundRectangle(), SCH_IO_KICAD_SEXPR_PARSER::parseSchCircle(), SCH_EASYEDAPRO_PARSER::ParseSchematic(), PNS_LOG_FILE::parseShape(), SCH_EASYEDAPRO_PARSER::ParseSymbol(), SCH_IO_KICAD_SEXPR_PARSER::parseSymbolCircle(), SCH_EASYEDA_PARSER::ParseSymbolShapes(), PCB_IO_EASYEDA_PARSER::ParseToBoardItemContainer(), BE_SHAPE_POINT::Paths(), CU_SHAPE_ARC::Paths(), CU_SHAPE_SEGMENT::Paths(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotPcbTarget(), SCH_PIN::PlotPinType(), SCH_LABEL_BASE::Print(), GERBER_DRAW_ITEM::Print(), SCH_PIN::printPinSymbol(), OUTSET_ROUTINE::ProcessItem(), FABMASTER::processPolygon(), RENDER_3D_RAYTRACE_BASE::Reload(), segmentIntersectsArc(), SegmentIntersectsBoard(), segmentIntersectsCircle(), PLOTTER::sketchOval(), PLOTTER::ThickArc(), AR_MATRIX::traceArc(), AR_MATRIX::traceCircle(), AR_MATRIX::traceFilledCircle(), AR_MATRIX::TraceFilledRectangle(), TransformCircleToPolygon(), TransformOvalToPolygon(), PCB_TARGET::TransformShapeToPolygon(), PCB_TRACK::TransformShapeToPolygon(), SHAPE_ARC::update_values(), PCB_DIM_RADIAL::updateGeometry(), PCB_DIM_LEADER::updateGeometry(), and ARC_GEOM_SYNCER::Validate().

◆ result_arc_to_arc

bool result_arc_to_arc
Initial value:
= arc1_sh->Collide( arc2_sh, pcbIUScale.mmToIU( c.m_clearance ),
constexpr EDA_IU_SCALE pcbIUScale
Definition: base_units.h:108
virtual bool Collide(const VECTOR2I &aP, int aClearance=0, int *aActual=nullptr, VECTOR2I *aLocation=nullptr) const
Check if the boundary of shape (this) lies closer to the point aP than aClearance,...
Definition: shape.h:181
constexpr int mmToIU(double mm) const
Definition: base_units.h:88
SHAPE * arc1_sh
SHAPE * arc2_sh
VECTOR2I location
int actual

Definition at line 800 of file test_shape_arc.cpp.

◆ result_arc_to_chain

bool result_arc_to_chain
Initial value:
=
int clearance
SHAPE * arc2_slc_sh

Definition at line 807 of file test_shape_arc.cpp.

◆ result_chain_to_arc

bool result_chain_to_arc
Initial value:

Definition at line 811 of file test_shape_arc.cpp.

◆ result_chain_to_chain

bool result_chain_to_chain
Initial value:

Definition at line 815 of file test_shape_arc.cpp.

◆ this_arc

const SHAPE_ARC this_arc
Initial value:
{ c.m_geom.m_center_point, c.m_geom.m_start_point,
EDA_ANGLE( c.m_geom.m_center_angle, DEGREES_T ), width }

Definition at line 517 of file test_shape_arc.cpp.