Elaboradar 0.1
|
◆ creo_cart()
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.
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
1622 cart(i, j) = MISSING;
1623
1625
1626 for(unsigned quad=0; quad<4; quad++)
1629 {
1630 unsigned irange = (unsigned)round(cd.range(i, j));
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
1672 }
1673 }
1674}
radarelab::Image< unsigned char > cart vol_pol interpolated in a cartesian map Definition: cum_bac.h:340 |