KiCad PCB EDA Suite
|
Describe ratsnest for a single net. More...
#include <ratsnest_data.h>
Classes | |
class | TRIANGULATOR_STATE |
Public Member Functions | |
RN_NET () | |
bool | IsDirty () const |
Return state of the 'dirty' flag, indicating that ratsnest for a given net is invalid and requires an update. | |
void | UpdateNet () |
Recompute ratsnest for a net. | |
void | RemoveInvalidRefs () |
void | OptimizeRNEdges () |
Find optimal ends of RNEdges. | |
void | Clear () |
void | AddCluster (std::shared_ptr< CN_CLUSTER > aCluster) |
unsigned int | GetNodeCount () const |
const std::vector< CN_EDGE > & | GetEdges () const |
std::vector< CN_EDGE > & | GetEdges () |
bool | NearestBicoloredPair (RN_NET *aOtherNet, VECTOR2I &aPos1, VECTOR2I &aPos2) const |
Protected Member Functions | |
void | compute () |
< Recompute ratsnest from scratch. | |
void | kruskalMST (const std::vector< CN_EDGE > &aEdges) |
Protected Attributes | |
std::multiset< std::shared_ptr< CN_ANCHOR >, CN_PTR_CMP > | m_nodes |
< Vector of nodes | |
std::vector< CN_EDGE > | m_boardEdges |
Vector of edges that makes ratsnest for a given net. | |
std::vector< CN_EDGE > | m_rnEdges |
Flag indicating necessity of recalculation of ratsnest for a net. | |
bool | m_dirty |
std::shared_ptr< TRIANGULATOR_STATE > | m_triangulator |
Describe ratsnest for a single net.
Definition at line 62 of file ratsnest_data.h.
RN_NET::RN_NET | ( | ) |
Definition at line 282 of file ratsnest_data.cpp.
References m_triangulator.
void RN_NET::AddCluster | ( | std::shared_ptr< CN_CLUSTER > | aCluster | ) |
Definition at line 568 of file ratsnest_data.cpp.
References m_boardEdges, and m_nodes.
Referenced by CONNECTIVITY_DATA::addRatsnestCluster().
void RN_NET::Clear | ( | ) |
Definition at line 558 of file ratsnest_data.cpp.
References m_boardEdges, m_dirty, m_nodes, and m_rnEdges.
|
protected |
< Recompute ratsnest from scratch.
Compute the minimum spanning tree using Kruskal's algorithm
Definition at line 288 of file ratsnest_data.cpp.
References kruskalMST(), m_boardEdges, m_nodes, m_rnEdges, m_triangulator, and PROF_TIMER::Show().
Referenced by UpdateNet().
|
inline |
Definition at line 97 of file ratsnest_data.h.
References m_rnEdges.
|
inline |
Definition at line 96 of file ratsnest_data.h.
References m_rnEdges.
Referenced by CONNECTIVITY_DATA::GetRatsnestForComponent(), CONNECTIVITY_DATA::GetRatsnestForItems(), CONNECTIVITY_DATA::GetRatsnestForPad(), ROUTER_TOOL::Init(), ROUTER_TOOL::RouteSelected(), RATSNEST_SEARCH_HANDLER::Search(), and RATSNEST_VIEW_ITEM::ViewDraw().
|
inline |
Definition at line 94 of file ratsnest_data.h.
References m_nodes.
Referenced by CONNECTIVITY_DATA::ComputeLocalRatsnest().
|
inline |
Return state of the 'dirty' flag, indicating that ratsnest for a given net is invalid and requires an update.
Definition at line 73 of file ratsnest_data.h.
References m_dirty.
|
protected |
Definition at line 110 of file ratsnest_data.cpp.
References m_nodes, m_rnEdges, and disjoint_set::unite().
Referenced by compute().
Sweep-line algorithm to cut the number of comparisons to find the closest point
Step 1: The outer loop needs to be the subset (selected nodes) as it is a linear search
Step 2: O( log n ) search to identify a close element ordered by x The fwd_it iterator will move forward through the elements while the rev_it iterator will move backward through the same set
As soon as the x distance (primary sort) is larger than the smallest distance, stop checking further elements
Step 3: using the same starting point, check points backwards for closer points
Definition at line 599 of file ratsnest_data.cpp.
References VECTOR2< int32_t >::ECOORD_MAX, m_nodes, SEG::Square(), and VECTOR2< T >::SquaredEuclideanNorm().
Referenced by CONNECTIVITY_DATA::ComputeLocalRatsnest().
void RN_NET::OptimizeRNEdges | ( | ) |
Find optimal ends of RNEdges.
The MST will have found the closest anchors, but when zones are involved we might have points closer than the anchors.
Normally called after UpdateNet(), but from a separate multi-threaded loop for safety.
Definition at line 351 of file ratsnest_data.cpp.
References SHAPE_LINE_CHAIN::BBox(), CENTER, SHAPE_LINE_CHAIN::ClosestSegmentsFast(), CN_ITEM::ConnectedItems(), SHAPE_LINE_CHAIN::CPoints(), CN_ITEM::GetBoardLayer(), BOX2< Vec >::GetCenter(), CN_ZONE_LAYER::GetOutline(), and m_rnEdges.
void RN_NET::RemoveInvalidRefs | ( | ) |
Definition at line 548 of file ratsnest_data.cpp.
References m_boardEdges, and m_rnEdges.
void RN_NET::UpdateNet | ( | ) |
Recompute ratsnest for a net.
Definition at line 540 of file ratsnest_data.cpp.
|
protected |
Vector of edges that makes ratsnest for a given net.
Definition at line 113 of file ratsnest_data.h.
Referenced by AddCluster(), Clear(), compute(), and RemoveInvalidRefs().
|
protected |
Definition at line 119 of file ratsnest_data.h.
Referenced by Clear(), IsDirty(), and UpdateNet().
|
protected |
< Vector of nodes
Vector of edges that make pre-defined connections
Definition at line 110 of file ratsnest_data.h.
Referenced by AddCluster(), Clear(), compute(), GetNodeCount(), kruskalMST(), and NearestBicoloredPair().
|
protected |
Flag indicating necessity of recalculation of ratsnest for a net.
Definition at line 116 of file ratsnest_data.h.
Referenced by Clear(), compute(), GetEdges(), kruskalMST(), OptimizeRNEdges(), and RemoveInvalidRefs().
|
protected |
Definition at line 123 of file ratsnest_data.h.