electrosim.rendering.field_sampler#

Classes

ElectricFieldSampler(world_size_m, ...[, ...])

Precompute electric field vectors on a pixel grid per frame.

class ElectricFieldSampler(world_size_m, pixels_per_meter, grid_step_px, softening_fraction, _centers_px=None, _vectors_px=None, _centers_m=None)[source]#

Bases: object

Precompute electric field vectors on a pixel grid per frame.

The sampler caches E vectors (shape [Hcells, Wcells, 2]) for the given grid step and exposes an iterator over grid centers and vectors for drawing.

Parameters:
  • world_size_m (numpy.ndarray shape (2,)) – World size (m) as (Lx, Ly).

  • pixels_per_meter (float) – Pixels per meter.

  • grid_step_px (int) – Grid spacing in pixels between field sample points.

  • softening_fraction (float) – Softening fraction used for field evaluation.

  • _centers_px (ndarray | None)

  • _vectors_px (ndarray | None)

  • _centers_m (ndarray | None)

world_size_m: ndarray#
pixels_per_meter: float#
grid_step_px: int#
softening_fraction: float#
recompute(particles)[source]#

Recompute field vectors over the grid for the given particle iterable.

Packs particle data for a Numba kernel when available; falls back to per-point Python evaluation otherwise. Results are stored for iteration.

Parameters:

particles (Iterable[Particle])

Return type:

None

iter_centers_and_vectors_px()[source]#

Yield ((x, y), (Ex, Ey)) pairs for each grid cell center in pixels.

Return type:

Iterable[Tuple[Tuple[int, int], Tuple[float, float]]]