Elaboradar  0.1

◆ 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.