- // Convert from geodetic to geocentric
- // coordinates.
- sgGeodToGeoc(lat_deg * SGD_DEGREES_TO_RADIANS,
- alt_ft * SG_FEET_TO_METER,
- &sea_level_radius_m,
- &lat_geoc_rad);
-
- // Calculate the cartesian coordinates
- // of point directly below at sea level.
- // aka Zero Elevation Position
- Point3D p = Point3D(lon_deg * SG_DEGREES_TO_RADIANS,
- lat_geoc_rad,
- sea_level_radius_m);
- Point3D tmp = sgPolarToCart3d(p) - scenery.get_next_center();
- sgSetVec3(_zero_elev_view_pos, tmp[0], tmp[1], tmp[2]);
-
- // Calculate the absolute view position
- // in fgfs coordinates.
- // aka Absolute View Position
- p.setz(p.radius() + alt_ft * SG_FEET_TO_METER);
- tmp = sgPolarToCart3d(p);
- sgdSetVec3(_absolute_view_pos, tmp[0], tmp[1], tmp[2]);
-
- // Calculate the relative view position
- // from the scenery center.
- // aka Relative View Position
- sgdVec3 scenery_center;
- sgdSetVec3(scenery_center,
- scenery.get_next_center().x(),
- scenery.get_next_center().y(),
- scenery.get_next_center().z());
- sgdVec3 view_pos;
- sgdSubVec3(view_pos, _absolute_view_pos, scenery_center);
- sgSetVec3(_relative_view_pos, view_pos);
+ // Update viewer's postion data for the target (at object) location
+ if (_type == FG_LOOKAT) {
+ _target_lon_deg = _target_location->getLongitude_deg();
+ _target_lat_deg = _target_location->getLatitude_deg();
+ _target_alt_ft = _target_location->getAltitudeASL_ft();
+ _target_roll_deg = _target_location->getRoll_deg();
+ _target_pitch_deg = _target_location->getPitch_deg();
+ _target_heading_deg = _target_location->getHeading_deg();
+ }