- globals->get_scenery()->get_cart_ground_intersection(cartantennapos, uservec, nearestHit);
- SGGeodesy::SGCartToGeod(nearestHit, hitpos);
-
- double radalt = getDistanceAntennaToHit(nearestHit);
- double course1, course2, distance;
-
- SGGeodesy::inverse(hitpos, antennapos, course1, course2, distance);
- _Instrument->setDoubleValue("hit/altitude-agl-ft",
- _user_alt_agl_node->getDoubleValue());
-
- if (radalt >= min_range && radalt <= max_range) {
- getMaterial();
-
- if (radalt < _min_radalt)
- _min_radalt = radalt;
-
- _Instrument->setDoubleValue("radar-altitude-ft", _min_radalt * SG_METER_TO_FEET);
- _Instrument->setDoubleValue("hit/radar-altitude-ft", radalt * SG_METER_TO_FEET);
- _Instrument->setDoubleValue("hit/brg-deg", course2);
- _Instrument->setDoubleValue("hit/range-m", distance);
- _Instrument->setStringValue("hit/material", _mat_name.c_str());
- _Instrument->setDoubleValue("hit/bumpiness", _bumpinessFactor);
-
- if (set_ht_ft!= 9999){
-
- if (_min_radalt * SG_METER_TO_FEET < set_ht_ft * (100 - set_excur)/100)
- _rad_alt_warning_node->setIntValue(-1);
- else if (_min_radalt * SG_METER_TO_FEET > set_ht_ft * (100 + set_excur)/100)
- _rad_alt_warning_node->setIntValue(1);
- else
- _rad_alt_warning_node->setIntValue(0);
-
- } else
- _rad_alt_warning_node->setIntValue(9999);
-
- } else {
- _rad_alt_warning_node->setIntValue(9999);
- _Instrument->setDoubleValue("radar-altitude-ft", _min_radalt * SG_METER_TO_FEET);
- _Instrument->setDoubleValue("hit/radar-altitude-ft",0);
- _Instrument->setDoubleValue("hit/brg-deg", 0);
- _Instrument->setDoubleValue("hit/range-m", 0);
- _Instrument->setStringValue("hit/material", "");
- _Instrument->setDoubleValue("hit/bumpiness", 0);
- }
-
- //cout << "usr hdg " << _user_hdg_deg_node->getDoubleValue()
- // << " ant brg " << course2
- // << " elev " << _Instrument->getDoubleValue("tilt")
- // << " gnd rng nm " << distance * SG_METER_TO_NM
- // << " ht " << hitpos.getElevationFt()
- // << " mat " << _mat_name
- // << " solid " << _solid
- // << " bumpiness " << _bumpinessFactor
- // << endl;
-
- }
+ globals->get_scenery()->get_cart_ground_intersection(cartantennapos, userVec, nearestHit);
+ double measuredDistance = dist(cartantennapos, nearestHit);
+
+ if (measuredDistance >= min_range && measuredDistance <= max_range) {
+ if (measuredDistance < _min_radalt) {
+ _min_radalt = measuredDistance;
+ haveHit = true;
+ }
+ } // of hit within permissible range
+ } // of elevation step
+ } // of azimuth step
+
+ _Instrument->setDoubleValue("radar-altitude-ft", _min_radalt * SG_METER_TO_FEET);
+ if (!haveHit) {
+ _rad_alt_warning_node->setIntValue(9999);