queryCircle method
List<QuadTreeParticle>
queryCircle(
- double centerX,
- double centerY,
- double radius, [
- List<
QuadTreeParticle> ? found,
Queries particles within a circular area
Implementation
List<QuadTreeParticle> queryCircle(
double centerX,
double centerY,
double radius, [
List<QuadTreeParticle>? found,
]) {
found ??= [];
// First check if circle intersects this node's boundary
if (!boundary.intersectsCircle(centerX, centerY, radius)) return found;
// Pre-calculate squared radius for efficient comparison
final double radiusSquared = radius * radius;
// Check particles in this node
for (final particle in particles) {
final double dx = particle.x - centerX;
final double dy = particle.y - centerY;
if (dx * dx + dy * dy <= radiusSquared) {
found.add(particle);
}
}
// Recursively query children
for (final CompressedQuadTreeNode child in children.values) {
child.queryCircle(centerX, centerY, radius, found);
}
return found;
}