]> git.mxchange.org Git - flightgear.git/commitdiff
Load pattern file from FG_HOME/antennas
authoradrian <adrian@localhost.com>
Sun, 4 Dec 2011 09:28:59 +0000 (11:28 +0200)
committeradrian <adrian@localhost.com>
Sun, 4 Dec 2011 09:28:59 +0000 (11:28 +0200)
src/Radio/antenna.cxx
src/Radio/antenna.hxx

index d6184890723f3bb985674c905afb9e997fbaa2c5..8ebb154f0e08ef7038a8a08a1c4766b74595e575 100644 (file)
 #endif
 
 #include <math.h>
-
+#include <iostream>
 #include <stdlib.h>
-
+#include <fstream>
 #include <Scenery/scenery.hxx>
 #include "antenna.hxx"
 
+using namespace std;
 
-FGRadioAntenna::FGRadioAntenna() {
+FGRadioAntenna::FGRadioAntenna(string type) {
        
        _mirror_y = 1;
        _mirror_z = 1;
        _invert_ground = 0;
+       load_antenna_pattern(type);
 }
 
 FGRadioAntenna::~FGRadioAntenna() {
@@ -48,6 +50,26 @@ double FGRadioAntenna::calculate_gain(double azimuth, double elevation) {
 
 /*** load external plot file generated by NEC4
 ***/
-void FGRadioAntenna::load_antenna_pattern() {
+void FGRadioAntenna::load_antenna_pattern(string type) {
+       
+       SGPath pattern_file(fgGetString("/sim/fg-home"));
+       pattern_file.append("antennas");
+       pattern_file.append(type + ".txt");
+       if (!pattern_file.exists()) {
+               return;
+       }
+       ifstream file_in(pattern_file.c_str());
+       int heading, elevation;
+       double gain;
+       while(!file_in.eof()) {
+               file_in >> heading >> elevation >> gain;
+               cerr << "head: " << heading << " elev: " << elevation << " gain: " << gain << endl;
+               AntennaGain datapoint;
+               datapoint.azimuth = heading;
+               datapoint.elevation = elevation;
+               datapoint.gain = gain;
+               _pattern.push_back(datapoint);
+       }
+               
        
 }
index 3e6da25664b6a7f1186919f1e6b8302a370c0363..f0c3877d8fa33d4df7b0161c4ec22c0e1f554ebb 100644 (file)
 #include <simgear/math/sg_geodesy.hxx>
 #include <simgear/debug/logstream.hxx>
 
+using std::string;
+
 class FGRadioAntenna
 {
 private:
-       void load_antenna_pattern();
+       void load_antenna_pattern(string type);
        int _mirror_y;
        int _mirror_z;
        int _invert_ground;
@@ -41,13 +43,13 @@ private:
                double elevation;
                double gain;
        };
-       
+       SGPath _pattern_file;
        typedef std::vector<AntennaGain> AntennaPattern;
        AntennaPattern _pattern;
        
 public:
        
-       FGRadioAntenna();
+       FGRadioAntenna(string type);
     ~FGRadioAntenna();
        double calculate_gain(double azimuth, double elevation);