- FG_LOG( FG_TERRAIN, FG_DEBUG,
- "Pos = (" << lon * RAD_TO_DEG << ", " << lat * RAD_TO_DEG
- << ") Current bucket = " << p
- << " Index = " << p.gen_index_str() );
-
- FG_LOG( FG_TERRAIN, FG_DEBUG, "Tile center " << t->center
- << " bounding radius = " << t->bounding_radius );
-
- // calculate tile offset
- // x = (t->offset.x = t->center.x - scenery.center.x);
- // y = (t->offset.y = t->center.y - scenery.center.y);
- // z = (t->offset.z = t->center.z - scenery.center.z);
-
- // calc current terrain elevation calculate distance from
- // vertical tangent line at current position to center of
- // tile.
-
- /* printf("distance squared = %.2f, bounding radius = %.2f\n",
- point_line_dist_squared(&(t->offset), &(v->view_pos),
- v->local_up), t->bounding_radius); */
-
- dist = point_line_dist_squared( t->center, abs_view_pos, local_up );
- FG_LOG( FG_TERRAIN, FG_DEBUG, "(gross check) dist squared = " << dist );
-
- if ( dist < FG_SQUARE(t->bounding_radius) ) {
-
- // traverse fragment list for tile
- FGTileEntry::FragmentIterator current = t->begin();
- FGTileEntry::FragmentIterator last = t->end();
-
- for ( ; current != last; ++current ) {
- frag_ptr = &(*current);
- /* printf("distance squared = %.2f, bounding radius = %.2f\n",
- point_line_dist_squared( &(frag_ptr->center),
- &abs_view_pos), local_up),
- frag_ptr->bounding_radius); */
-
- dist = point_line_dist_squared( frag_ptr->center,
- abs_view_pos,
- local_up);
- if ( dist <= FG_SQUARE(frag_ptr->bounding_radius) ) {
- if ( frag_ptr->intersect( abs_view_pos,
- earth_center, 0, result ) ) {
- FG_LOG( FG_TERRAIN, FG_DEBUG, "intersection point " <<
- result );
- // compute geocentric coordinates of tile center
- Point3D pp = fgCartToPolar3d(result);
- FG_LOG( FG_TERRAIN, FG_DEBUG, " polar form = " << pp );
- // convert to geodetic coordinates
- fgGeocToGeod(pp.lat(), pp.radius(), &lat_geod,
- &alt, &sea_level_r);
-
- // printf("alt = %.2f\n", alt);
- // exit since we found an intersection
- if ( alt > -9999.0 ) {
- // printf("returning alt\n");
- return alt;
- } else {
- // printf("returning 0\n");
- return 0.0;
- }
- }