-
-#ifdef MARCHING
- /* Load the surface */
- if (self->cur_triangles) {
- g_free(self->cur_triangles);
- self->cur_triangles = NULL;
- }
- self->cur_num_triangles = 0;
- int x = 1;
- for (guint vi = 0; vi < radar->h.nvolumes; vi++) {
- if (radar->v[vi] == NULL) continue;
-
- for (guint si = 0; si+1 < radar->v[vi]->h.nsweeps; si++) {
- Sweep *sweep0 = radar->v[vi]->sweep[si+0];
- Sweep *sweep1 = radar->v[vi]->sweep[si+1];
-
- //g_debug("_gis_plugin_radar_expose: sweep[%3d-%3d] -- nrays = %d, %d",
- // si, si+1,sweep0->h.nrays, sweep1->h.nrays);
-
- /* Skip super->regular resolution switch for now */
- if (sweep0 == NULL || sweep0->h.elev == 0 ||
- sweep1 == NULL || sweep1->h.elev == 0 ||
- sweep0->h.nrays != sweep1->h.nrays)
- continue;
-
- /* We repack the arrays so that raysX[0] is always north, etc */
- Ray **rays0 = g_malloc0(sizeof(Ray*)*sweep0->h.nrays);
- Ray **rays1 = g_malloc0(sizeof(Ray*)*sweep1->h.nrays);
-
- for (guint ri = 0; ri < sweep0->h.nrays; ri++)
- rays0[(guint)(sweep0->ray[ri]->h.azimuth * sweep0->h.nrays / 360)] =
- sweep0->ray[ri];
- for (guint ri = 0; ri < sweep1->h.nrays; ri++)
- rays1[(guint)(sweep1->ray[ri]->h.azimuth * sweep1->h.nrays / 360)] =
- sweep1->ray[ri];
-
- for (guint ri = 0; ri+x < sweep0->h.nrays; ri+=x) {
- //g_debug("_gis_plugin_radar_expose: ray[%3d-%3d] -- nbins = %d, %d, %d, %d",
- // ri, ri+x,
- // rays0[ri ]->h.nbins,
- // rays0[ri+1]->h.nbins,
- // rays1[ri ]->h.nbins,
- // rays1[ri+1]->h.nbins);
-
- for (guint bi = 0; bi+x < rays1[ri]->h.nbins; bi+=x) {
- GRIDCELL grid = {};
- _gis_plugin_radar_grid_set(&grid, 7, rays0[(ri )%sweep0->h.nrays], bi+x);
- _gis_plugin_radar_grid_set(&grid, 6, rays0[(ri+x)%sweep0->h.nrays], bi+x);
- _gis_plugin_radar_grid_set(&grid, 5, rays0[(ri+x)%sweep0->h.nrays], bi );
- _gis_plugin_radar_grid_set(&grid, 4, rays0[(ri )%sweep0->h.nrays], bi );
- _gis_plugin_radar_grid_set(&grid, 3, rays1[(ri )%sweep0->h.nrays], bi+x);
- _gis_plugin_radar_grid_set(&grid, 2, rays1[(ri+x)%sweep0->h.nrays], bi+x);
- _gis_plugin_radar_grid_set(&grid, 1, rays1[(ri+x)%sweep0->h.nrays], bi );
- _gis_plugin_radar_grid_set(&grid, 0, rays1[(ri )%sweep0->h.nrays], bi );
-
- TRIANGLE tris[10];
- int n = march_one_cube(grid, 40, tris);
-
- self->cur_triangles = g_realloc(self->cur_triangles,
- (self->cur_num_triangles+n)*sizeof(TRIANGLE));
- for (int i = 0; i < n; i++) {
- //g_debug("triangle: ");
- //g_debug("\t(%f,%f,%f)", tris[i].p[0].x, tris[i].p[0].y, tris[i].p[0].z);
- //g_debug("\t(%f,%f,%f)", tris[i].p[1].x, tris[i].p[1].y, tris[i].p[1].z);
- //g_debug("\t(%f,%f,%f)", tris[i].p[2].x, tris[i].p[2].y, tris[i].p[2].z);
- self->cur_triangles[self->cur_num_triangles+i] = tris[i];
- }
- self->cur_num_triangles += n;
- //g_debug(" ");
- }
- }
- }
- break; // Exit after first volume (reflectivity)
- }
-#endif
-
- /* Load the first sweep by default */
- if (radar->h.nvolumes < 1 || radar->v[0]->h.nsweeps < 1) {
- g_warning("No sweeps found\n");
- } else {
- /* load first available sweep */
- for (int vi = 0; vi < radar->h.nvolumes; vi++) {
- if (radar->v[vi]== NULL) continue;
- for (int si = 0; si < radar->v[vi]->h.nsweeps; si++) {
- if (radar->v[vi]->sweep[si]== NULL) continue;
- load_colormap(self, radar->v[vi]->h.type_str);
- load_sweep(self, radar->v[vi]->sweep[si]);
- break;
- }
- break;
- }
- }
-
- load_radar_gui(self, radar);