void FGAIAircraft::checkVisibility()
{
- double visibility_meters = fgGetDouble("/environment/visibility-m");
-
- FGViewer* vw = globals->get_current_view();
- double course, distance;
-
- SGWayPoint current(pos.getLongitudeDeg(), pos.getLatitudeDeg(), 0);
- SGWayPoint view (vw->getLongitude_deg(), vw->getLatitude_deg(), 0);
- view.CourseAndDistance(current, &course, &distance);
- if (distance > visibility_meters) {
- invisible = true;
- } else {
- invisible = false;
- }
+ double visibility_meters = fgGetDouble("/environment/visibility-m");
+ FGViewer* vw = globals->get_current_view();
+ invisible = (SGGeodesy::distanceM(vw->getPosition(), pos) > visibility_meters);
}
// Only do the proper hitlist stuff if we are within visible range of the viewer.
if (!invisible) {
double visibility_meters = fgGetDouble("/environment/visibility-m");
-
FGViewer* vw = globals->get_current_view();
- double course, distance;
-
- SGWayPoint current(pos.getLongitudeDeg(), pos.getLatitudeDeg(), 0);
- SGWayPoint view (vw->getLongitude_deg(), vw->getLatitude_deg(), 0);
- view.CourseAndDistance(current, &course, &distance);
- if (distance > visibility_meters) {
+
+ if (SGGeodesy::distanceM(vw->getPosition(), pos) > visibility_meters) {
return;
}
// Only do the proper hitlist stuff if we are within visible range of the viewer.
double visibility_meters = fgGetDouble("/environment/visibility-m");
FGViewer* vw = globals->get_current_view();
- if(dclGetHorizontalSeparation(_pos, SGGeod::fromDegM(vw->getLongitude_deg(), vw->getLatitude_deg(), 0.0)) > visibility_meters) {
+ if(dclGetHorizontalSeparation(_pos, SGGeod::fromGeodM(vw->getPosition(), 0.0)) > visibility_meters) {
_ground_elevation_m = aptElev;
return;
}
- // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
- double range = 500.0;
- if (!globals->get_tile_mgr()->scenery_available(_aip.getPosition(), range)) {
- // Try to shedule tiles for that position.
- globals->get_tile_mgr()->update( _aip.getPosition(), range );
- }
+ // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
+ double range = 500.0;
+ if (!globals->get_tile_mgr()->scenery_available(_aip.getPosition(), range)) {
+ // Try to shedule tiles for that position.
+ globals->get_tile_mgr()->update( _aip.getPosition(), range );
+ }
- // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
- double alt;
- if (globals->get_scenery()->get_elevation_m(SGGeod::fromGeodM(_aip.getPosition(), 20000), alt, 0))
- _ground_elevation_m = alt;
+ // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
+ double alt;
+ if (globals->get_scenery()->get_elevation_m(SGGeod::fromGeodM(_aip.getPosition(), 20000), alt, 0))
+ _ground_elevation_m = alt;
}
// get the orientation
const SGQuatd view_or = current_view->getViewOrientation();
- SGQuatd surf_or = SGQuatd::fromLonLatDeg(
- current_view->getLongitude_deg(), current_view->getLatitude_deg());
+ SGQuatd surf_or = SGQuatd::fromLonLat(current_view->getPosition());
SGQuatd model_or = SGQuatd::fromYawPitchRollDeg(
globals->get_aircraft_model()->get3DModel()->getHeadingDeg(),
globals->get_aircraft_model()->get3DModel()->getPitchDeg(),
// pilot view, model in model view).
// FIXME: the model view position (ie target positions)
// should be in the model class.
- virtual double getLongitude_deg () const { return _position.getLongitudeDeg(); }
- virtual double getLatitude_deg () const { return _position.getLatitudeDeg(); }
-
virtual void setPosition (double lon_deg, double lat_deg, double alt_ft);
const SGGeod& getPosition() const { return _position; }
-
// Reference geodetic target position...
virtual void setTargetPosition (double lon_deg, double lat_deg, double alt_ft);
const SGGeod& getTargetPosition() const { return _target; }
// get the orientation
const SGQuatd view_or = observer->getViewOrientation();
- SGQuatd surf_or = SGQuatd::fromLonLatDeg(
- observer->getLongitude_deg(),
- observer->getLatitude_deg());
+ SGQuatd surf_or = SGQuatd::fromLonLat(observer->getPosition());
+
SGQuatd model_or = SGQuatd::fromYawPitchRollDeg(
model->getHeadingDeg(),
model->getPitchDeg(),