VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RFsig.h
Go to the documentation of this file.
1 /* © 1998 JRM Technologies, Inc.*/
2 
3 
4 
5 /***********************************
6 Copyright JRM Enterprises, Inc. 1998
7 All rights reserved.
8 
9 This code is the intellectual property of JRM Enterprises, Inc.
10 It may not be used or released as source or compiled binary form
11 without the prior written consent of JRM Enterprises, Inc.
12 ***********************************/
13 
14 
15 #include "SigSimStructs.h"
16 #include "Objects.h"
17 #include "SigSimAPI.h"
18 
19 #ifdef __cplusplus
20 extern "C"
21 {
22 #endif
23 
24 #define NUMBER_RCS_HEADER_FIELDS 12
25 #define NUMBER_RCS_LINE_FIELDS 15
26 
27  /*// In SigSimAPI.h:
28  double UnityBeamwidth2Gain(double beamwidth_rad);
29  double UnityGain2Beamwidth(double gain);
30  double UnityDirectivity2Gain(double directivity);
31  double UnityGain2Directivity(double gain);
32 
33 
34  double LobeBeamwidth2Gain(double beamwidth_rad);
35  double LobeGain2Beamwidth(double gain);
36  double LobeDirectivity2Gain(double directivity);
37  double LobeGain2Directivity(double gain);
38 
39  double RectBeamwidth2Gain(double beamwidth_rad);
40  double RectGain2Beamwidth(double gain);
41  double RectDirectivity2Gain(double directivity);
42  double RectGain2Directivity(double gain);
43  */
44 
45  int FillAtObjectRFSourceFromSensor(SENSOR *sens, METIN *metin, OBJECT *object, INCIDENT_RADIANCE *incident);
46  int GetAtTerrainSignatureRF(VECTOR to_view_NED, double *weight, MATL_PROP_TABLE *mp_table, VECTOR normal_NED, double surface_area_m2, ENVIRONMENTAL_INFLUENCE_MAP eimap, double *exitent_h, double *exitent_v);
47  int Get_HV_Axes_NED(VECTOR NED, VECTOR *horizontal, VECTOR *vertical);
48  int GetAtObjectSignatureRF(VECTOR to_view_NED, double *weight, OBJECT *object, ENVIRONMENTAL_INFLUENCE_MAP eimap, double *exitent_h, double *exitent_v);
49 
51 
52  double Sigma0(double gamma, double A, double grazing_angle_rad);
53  double UnpolarizedAbsoluteRCSatOrientationFRD(double GHz, VECTOR FRD, OLD_RCS_TABLE rcs);
54  //int ReadOLDRCSFile(char *in_file, OLD_RCS_TABLE **rcs_table);
55  //double BAND_UnpolarizedAbsoluteRCSatOrientationFRD(BAND band, VECTOR FRD, OLD_RCS_TABLE rcs);
56 
57  int BandAveragedArealRCS(MATL_PROP_TABLE mp_table, BAND band, double Zenith, enum Polarization PL, double *RCS, double *STD);
58  int BandAveragedUlabyParams(MATL_PROP_TABLE mp_table, BAND band, enum Polarization PL, double *P1, double *P2, double *P3, double *P4, double *P5, double *P6, double *M1, double *M2, double *M3);
59  int BAND_UlabyParams(MATL_PROP_TABLE mp_table, BAND band, enum Polarization PL, double *P1, double *P2, double *P3, double *P4, double *P5, double *P6, double *M1, double *M2, double *M3);
60  //int BAND_EstimateRCSShininess(MATL_PROP_TABLE mp_table, BAND band);
61 
62 
63  // BAND_TerrainRCS() provides Ulaby-Dobson terrain RCS returns for a given zenith angle, wavelength, and polarization:
64  // Inputs: band = desired waveband
65  // Zenith angle [rad]
66  // Polarization [any]
67  // mp_table = relevant MATL_PROP_TABLE whose top layer contains spectral RCS data
68  // Uses : mp_table.{nspecrecs, reflectflag[i]=rf, polarflag[i]==PL, mp_table.lambda_um[i], param{1-9}[i]}.
69  // Outputs: *RCS = mean unpolarized terrain radar cross section (sigma_0) [dB] for the specified waveband and angle.
70  // *STD = standard deviation of the RCS value [dB] for the specified waveband and angle.
71  // Assumes: mp_table.lambda_um values are at beginning of bins, and are in increasing order for a given polarization.
72  // Returns: SIGSIM_DATA_NOT_FOUND if there exist no spectral records in mp_table for which (mp_table.reflectflag[i]==rf)&&(mp_table.polarflag[i]==PL).
73  // SIGSIM_SUCCESS upon successful completion.
74  //int BAND_TerrainRCS(MATL_PROP_TABLE mp_table, BAND band, double Zenith, enum Polarization PL, double *RCS, double *STD);
75 
76  // TerrainRCS() provides Ulaby-Dobson terrain RCS returns for a given zenith angle, wavelength, and polarization:
77  // Inputs: lambda [um] = desired wavelength
78  // Zenith angle [rad]
79  // Polarization [any]
80  // mp_table = relevant MATL_PROP_TABLE whose top layer contains spectral RCS data
81  // Uses : mp_table.{nspecrecs, reflectflag[i]=rf, polarflag[i]==PL, mp_table.lambda_um[i], param{1-9}[i]}.
82  // Outputs: *RCS = mean unpolarized terrain radar cross section (sigma_0) [dB] for the specified wavelength and angle.
83  // *STD = standard deviation of the RCS value [dB] for the specified wavelength and angle.
84  // Assumes: mp_table.lambda_um values are at beginning of bins, and are in increasing order for a given polarization.
85  // Returns: SIGSIM_DATA_NOT_FOUND if there exist no spectral records in mp_table for which (mp_table.reflectflag[i]==rf)&&(mp_table.polarflag[i]==PL).
86  // SIGSIM_SUCCESS upon successful completion.
87  //int TerrainRCS(MATL_PROP_TABLE mp_table, double lambda, double Zenith, enum Polarization PL, double *RCS, double *STD);
88 
89  double Tsigma0(double Zenith, double P1, double P2, double P3, double P4, double P5, double P6);
90  double TSTDDev(double Zenith, double M1, double M2, double M3);
91 
92  // TerrainRCS_Polynomial() provides Ulaby-Dobson terrain RCS parameters for a given angle, wavelength, and polarization:
93  // Inputs: lambda [um] = desired wavelength
94  // mp_table = relevant MATL_PROP_TABLE whose top layer contains spectral RCS data
95  // PL = polarization state (use "un" for average of all polarization states).
96  // Uses : mp_table.{nspecrecs, reflectflag[i]=rf, polarflag[i]==PL, mp_table.lambda_um[i], param{1-9}[i]}.
97  // Outputs: Coefficients of polynomial RCS = RCS0 + RCS1 * sin(Zenith) + RCS2 * sin^2(Zenith) + RCS3 * sin^3(Zenith)
98  // Coefficients of polynomial STD = STD0 + STD1 * sin(Zenith) + STD2 * sin^2(Zenith)
99  // Assumes: mp_table.lambda_um values are at beginning of bins, and are in increasing order for a given polarization.
100  // Returns: SIGSIM_DATA_NOT_FOUND if there exist no spectral records in mp_table for which (mp_table.reflectflag[i]==rf)&&(mp_table.polarflag[i]==PL)&&(lambda>mp_table.lambda_um[i]).
101  // SIGSIM_SUCCESS upon successful completion.
102  //int TerrainRCS_Polynomial(MATL_PROP_TABLE mp_table, double lambda, enum Polarization PL, double *RCS0, double *RCS1, double *RCS2, double *RCS3, double *STD0, double *STD1, double *STD2);
103  int BAND_TerrainRCS_Polynomial(MATL_PROP_TABLE mp_table, BAND band, enum Polarization PL, double *RCS0, double *RCS1, double *RCS2, double *RCS3, double *STD0, double *STD1, double *STD2);
104 
105 
106  // ---------------- CW DATALINKS and EW JAMMERS ------------------
107  //int AddDATALINK_PARTICIPANT(DATALINK_PARTICIPANT **c, int *nc, DATALINK_PARTICIPANT toadd);
108  //void FreeDATALINK_PARTICIPANTArray(DATALINK_PARTICIPANT **c, int *nc, jrmbool init);
109  //int LoadDATALINK_PARTICIPANTs(char *filepath, DATALINK_PARTICIPANT **datalink, int *ndatalinks);
110  //int FindDATALINK_PARTICIPANT(DATALINK_PARTICIPANT *datalink, int ndatalinks, char *name, DATALINK_PARTICIPANT *found);
111  //int AddRF_JAMMER(RF_JAMMER **c, int *nc, RF_JAMMER toadd);
112  //void FreeRF_JAMMERArray(RF_JAMMER **c, int *nc, jrmbool init);
113  //int LoadRF_JAMMERs(char *filepath, RF_JAMMER **rfjammer, int *nrfjammers);
114  //int FindRF_JAMMER(RF_JAMMER *rfjammer, int nrfjammers, char *name, RF_JAMMER *found);
115 
116 #ifdef __cplusplus
117 }
118 #endif
119 


Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)