29#include <simgear/io/iostreams/sgstream.hxx>
40 load_NEC_antenna_pattern(type);
44 for (
unsigned i =0;
i < _pattern.size();
i++) {
45 AntennaGain *point_gain = _pattern[
i];
55 bearing = fabs(bearing);
57 bearing = 360 - bearing;
59 int azimuth = (int)floor(bearing);
60 azimuth += azimuth % 2;
61 int elevation = (int)floor(angle);
62 elevation += elevation % 2;
64 for (
unsigned i =0;
i < _pattern.size();
i++) {
65 AntennaGain *point_gain = _pattern[
i];
67 if ( (azimuth == point_gain->azimuth) && (elevation == point_gain->elevation)) {
68 return point_gain->gain;
76void FGRadioAntenna::load_NEC_antenna_pattern(
string type) {
79 SGPath pattern_file(
globals->get_fg_root());
80 pattern_file.append(
"Navaids/Antennas");
81 pattern_file.append(type +
".txt");
82 if (!pattern_file.exists()) {
85 sg_ifstream file_in(pattern_file);
86 int heading, elevation;
88 while(!file_in.eof()) {
89 file_in >> heading >> elevation >> gain;
90 if( (_mirror_y == 1) && (heading > 180) ) {
93 if ( (_mirror_z == 1) && (elevation < 0) ) {
97 AntennaGain *datapoint =
new AntennaGain;
98 datapoint->azimuth = heading;
99 datapoint->elevation = 90.0 -
abs(elevation);
100 datapoint->gain = gain;
101 _pattern.push_back(datapoint);
FGRadioAntenna(std::string type)
double calculate_gain(double bearing, double angle)