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. More... | |
void | UpdateNet () |
Recompute ratsnest for a net. More... | |
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. More... | |
void | kruskalMST (const std::vector< CN_EDGE > &aEdges) |
Find optimal ends of RNEdges. More... | |
void | optimizeRNEdges () |
Protected Attributes | |
std::multiset< std::shared_ptr< CN_ANCHOR >, CN_PTR_CMP > | m_nodes |
< Vector of nodes More... | |
std::vector< CN_EDGE > | m_boardEdges |
Vector of edges that makes ratsnest for a given net. More... | |
std::vector< CN_EDGE > | m_rnEdges |
Flag indicating necessity of recalculation of ratsnest for a net. More... | |
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 262 of file ratsnest_data.cpp.
References m_triangulator.
void RN_NET::AddCluster | ( | std::shared_ptr< CN_CLUSTER > | aCluster | ) |
Definition at line 473 of file ratsnest_data.cpp.
References m_boardEdges, and m_nodes.
Referenced by CONNECTIVITY_DATA::addRatsnestCluster().
void RN_NET::Clear | ( | ) |
Definition at line 463 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 268 of file ratsnest_data.cpp.
References kruskalMST(), m_boardEdges, m_nodes, m_rnEdges, m_triangulator, and PROF_TIMER::Show().
Referenced by UpdateNet().
|
inline |
|
inline |
Definition at line 85 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(), and RATSNEST_VIEW_ITEM::ViewDraw().
|
inline |
Definition at line 83 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 |
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.
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 504 of file ratsnest_data.cpp.
References VECTOR2< int >::ECOORD_MAX, m_nodes, SEG::Square(), and VECTOR2< T >::SquaredEuclideanNorm().
Referenced by CONNECTIVITY_DATA::ComputeLocalRatsnest().
|
protected |
Definition at line 331 of file ratsnest_data.cpp.
References SHAPE::Collide(), CN_ITEM::ConnectedItems(), SHAPE_LINE_CHAIN::CPoints(), EuclideanNorm(), CN_ZONE_LAYER::GetOutline(), SHAPE_LINE_CHAIN::GetPoint(), CN_ITEM::Layer(), and m_rnEdges.
Referenced by UpdateNet().
void RN_NET::UpdateNet | ( | ) |
Recompute ratsnest for a net.
Definition at line 447 of file ratsnest_data.cpp.
References compute(), m_dirty, optimizeRNEdges(), and PROF_TIMER::Show().
|
protected |
Vector of edges that makes ratsnest for a given net.
Definition at line 106 of file ratsnest_data.h.
Referenced by AddCluster(), Clear(), and compute().
|
protected |
Definition at line 112 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 103 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 109 of file ratsnest_data.h.
Referenced by Clear(), compute(), GetEdges(), kruskalMST(), and optimizeRNEdges().
|
protected |
Definition at line 116 of file ratsnest_data.h.