MCPcopy Create free account
hub / github.com/MeshInspector/MeshLib / construct

Method construct

source/MRMesh/MRAABBTreePoints.cpp:145–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

143}
144
145std::pair<AABBTreePoints::NodeVec, std::vector<AABBTreePoints::Point>> AABBTreePointsMaker::construct(
146 const VertCoords & points, const VertBitSet * validPoints )
147{
148 MR_TIMER;
149
150 const int numPoints = validPoints ? int( validPoints->count() ) : int( points.size() );
151 if ( numPoints <= 0 )
152 return {};
153
154 orderedPoints_.resize( numPoints );
155 int n = 0;
156 if ( validPoints )
157 {
158 for ( auto v : *validPoints )
159 orderedPoints_[n++] = { points[v], v };
160 }
161 else
162 {
163 for ( auto v = 0_v; v < points.size(); ++v )
164 orderedPoints_[n++] = { points[v], v };
165 }
166
167 nodes_.resize( getNumNodesPoints( numPoints ) );
168 makeSubtree( SubtreePoints( AABBTreePoints::rootNodeId(), 0, numPoints ), std::thread::hardware_concurrency() );
169
170 return {std::move( nodes_ ),std::move( orderedPoints_ )};
171}
172
173AABBTreePoints::AABBTreePoints( const PointCloud& pointCloud )
174{

Callers 1

AABBTreePointsMethod · 0.45

Calls 6

getNumNodesPointsFunction · 0.85
SubtreePointsClass · 0.85
rootNodeIdFunction · 0.85
countMethod · 0.80
sizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected