Program Listing for File antenna.h¶
↰ Return to documentation for file (measurements/antenna.h)
#pragma once
#include <string>
#include "lupnt/core/definitions.h"
#include "lupnt/numerics/vector_macros.h"
namespace lupnt {
class Antenna {
public:
Antenna() = default;
Antenna(const std::string& name) : name_(name) { LoadAntennaPattern(); };
void LoadAntennaPattern();
Real ComputeGain(Real theta, Real phi) const;
VEC_DEF_REAL_REAL(ComputeGain)
std::string GetName() { return name_; }
Real ComputeGain(const Vec3& direction) const;
MatXd GetGainMatrix() { return gain_; }
VecXd GetPhiVector() { return phi_; }
VecXd GetThetaVector() { return theta_; }
private:
int n_dim_; // Number of dimensions (1 or 2)
std::string name_; // Name (e.g., Block-IIR_ACE)
double phi_max_; // Minimum phiation angle [deg]
MatXd gain_; // Gain pattern [dB]
VecXd phi_; // Phi angles [deg]
VecXd theta_; // Theta angles [deg]
void FormatAntennaPattern(std::vector<double>& phi, std::vector<double>& theta,
std::vector<std::vector<double>>& gain);
};
} // namespace lupnt