Elaboradar 0.1
Caricamento in corso...
Ricerca in corso...
Nessun risultato

◆ sample()

void radarelab::CoordinateMapping::sample ( unsigned beam_count,
unsigned x,
unsigned y,
std::function< void(unsigned, unsigned)> & f ) const

Generate all the (azimuth, range) indices corresponding to a map point.

Definizione alla linea 44 del file cart.cpp.

45{
46 // Map cartesian coordinates to angles and distances
47 unsigned range_idx = floor(map_range(y, x));
48 if (range_idx >= beam_size) return;
49
50 // Exact angle
51 double az = map_azimuth(y, x);
52
53#if 0
54 // Iterate indices 0.45° before and after
55 int az_min = floor((az - .45) * beam_count / 360.0);
56 int az_max = ceil((az + .45) * beam_count / 360.0);
57 if (az_min < 0)
58 {
59 az_min += beam_count;
60 az_max += beam_count;
61 }
62#endif
63
64 // Iterate on angles that actually overlap with the map cell
65 double d_az = M_1_PI * 180. / (range_idx + 0.5) / 2;
66 int az_min = round((az - d_az) * beam_count / 360.);
67 int az_max = round((az + d_az) * beam_count / 360.);
68
69 // Iterate all points between az_min and az_max
70 for (int iaz = az_min; iaz <= az_max; ++iaz)
71 f((unsigned)((iaz+beam_count) % beam_count), range_idx);
72}
const unsigned beam_size
Beam size of the volume that we are mapping to cartesian coordinates.
Definition cart.h:24
Matrix2D< double > map_range
Range indices to use to lookup a map point in a volume.
Definition cart.h:44
Matrix2D< double > map_azimuth
Azimuth indices to use to lookup a map point in a volume.
Definition cart.h:34

Referenzia beam_size, map_azimuth, e map_range.

Referenziato da radarelab::FullsizeIndexMapping::map_max_sample(), radarelab::ScaledIndexMapping::sample(), e radarelab::ScaledIndexMapping::to_cart_average().