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

◆ creo_cart()

void elaboradar::SingleCart::creo_cart ( const radarelab::Volume< double > & volume,
unsigned int el_index )

conversione da polare a cartesiano alta risoluzione

funzione che crea l'output cartesiano dal polare

cicla sui quadranti e su i e j, usando il range e l'azimut ottenuti tramite la funzione creo_matrice_conv() NOTA Questa funzione mappa il campo in input in modo brutale su un unsigned char. DA SISTEMARE.

Parametri
[in]volume- volume passato per grafica
[in]el_index- indice elevazione richiesta da graficare

Definizione alla linea 1610 del file cum_bac.cpp.

1611{
1612 LOG_CATEGORY("radar.singlecart");
1613
1614 //matrici per ricampionamento cartesiano
1615 //int x,y,irange,az,iaz,az_min,az_max,cont;
1616 int x,y,iaz,az_min,az_max;
1617 float az;
1618 CartData cd(max_bin);
1619
1620 for(unsigned i=0; i<max_bin *2; i++)
1621 for(unsigned j=0; j<max_bin *2; j++)
1622 cart(i, j) = MISSING;
1623
1624 LOG_INFO("Creo_cart - %u", max_bin);
1625
1626 for(unsigned quad=0; quad<4; quad++)
1627 for(unsigned i=0; i<max_bin; i++)
1628 for(unsigned j=0; j<max_bin; j++)
1629 {
1630 unsigned irange = (unsigned)round(cd.range(i, j));
1631 if (irange >= max_bin)
1632 continue;
1633 switch(quad)
1634 {
1635 case 0:
1636 x = max_bin + i;
1637 y = max_bin - j;
1638 az = cd.azimut(i, j);
1639 break;
1640 case 1:
1641 x = max_bin + j;
1642 y = max_bin + i;
1643 az = cd.azimut(i, j) + 90.;
1644 break;
1645 case 2:
1646 x = max_bin - i;
1647 y = max_bin + j;
1648 az = cd.azimut(i, j) + 180.;
1649 break;
1650 case 3:
1651 x = max_bin - j;
1652 y = max_bin - i;
1653 az = cd.azimut(i, j)+270.;
1654 break;
1655 }
1656
1657 az_min = (int)((az - .45)/.9);
1658 az_max = ceil((az + .45)/.9);
1659
1660
1661 if(az_min < 0)
1662 {
1663 az_min = az_min + NUM_AZ_X_PPI;
1664 az_max = az_max + NUM_AZ_X_PPI;
1665 }
1666 for(iaz = az_min; iaz<az_max; iaz++){
1667 // Enrico: cerca di non leggere fuori dal volume effettivo
1668 unsigned char sample = 0;
1669 if (irange < volume[el_index].beam_size)
1670 sample = max((unsigned char) (volume[el_index].get(iaz%NUM_AZ_X_PPI, irange)), (unsigned char)1); // il max serve perchè il valore di MISSING è 0
1671 if(cart(y, x) <= sample) cart(y, x) = sample;
1672 }
1673 }
1674}
const unsigned max_bin
dimensione matrice
Definition cum_bac.h:337
radarelab::Image< unsigned char > cart
vol_pol interpolated in a cartesian map
Definition cum_bac.h:340

Referenzia cart, e max_bin.