VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
weatherStateProvider.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
16 
19 
20 #include <matrix/vlVector.h>
21 #include <geometry/chord.h>
22 
24 
27 {
33 };
34 
40 {
41 public:
42  double airPressure() { return myAirPressure; }
44 
45  double airTemperature() { return myAirTemperature; }
47 
50 
53 
56 
59 
60  double humidity() { return myHumidity; }
62 
63  double windDirection() { return myWindDirection; }
65 
66  double windSpeed() { return myWindSpeed; }
68 
71 
72  double airVisibility() { return myAirVisibility; }
74 
77 
78 private:
79  double myAirPressure;
85  double myHumidity;
87  double myWindSpeed;
91 };
92 
99 {
100 public:
102  {
104  myCoverFraction = 0;
105  myVisibility = 0;
106  myBottomAltitude = 0;
107  myTopAltitude = 0;
108  myStartPosition = DtVector(0, 0, 0);
109  myDistance = 0;
110  }
111 
114 
115  double coverFraction() const { return myCoverFraction; }
117 
118  double visibility() const { return myVisibility; }
120 
121  double bottomAltitude() const { return myBottomAltitude; }
123 
124  double topAltitude() const { return myTopAltitude; }
126 
129 
130  double distance() const { return myDistance; }
132 
133 private:
138  double myVisibility;
142  double myTopAltitude;
144  double myDistance;
145 };
146 
153 {
154 public:
156  {
159  myStartPosition = DtVector(0, 0, 0);
160  myDistance = 0;
161  }
162 
165 
168 
171 
172  double distance() { return myDistance; }
174 
175 private:
179  double myDistance;
180 };
181 
186 {
187 private:
189 
191  const DtWeatherStateProvider & operator=(const DtWeatherStateProvider &
192  orig);
195 
196 public:
197 
199  DtWeatherStateProvider(const DtSimulationServices* simManager);
200 
202  virtual ~DtWeatherStateProvider();
203 
207  virtual bool init();
208 
212  virtual void tick();
213 
214  virtual const DtSimulationServices* simManager() const;
215 
220  static DtWeatherStateProvider* creator(const DtSimulationServices* simMgr);
221 
223 
232  virtual std::vector<CloudStateSegment> cloudLayers(
233  const DtVector& localPosition) const;
234 
238  virtual double airVisibility(const DtVector& localPosition) const;
239 
242  virtual double visibility(const DtVector& localPosition) const;
243 
245  virtual int visibilityObscurant(const DtVector& localPosition) const;
246 
256  virtual double averageVisibilityOnChord(const DtChord& path) const;
257 
260  virtual double airTemperatureAtAltitude(const double mslTemperature,
261  const double altitude) const;
262 
267  virtual double airTemperature(const DtVector& localPosition) const;
268 
272  virtual double mslTemperatureFromAirTemperatureAtAltitude(const double airTemperature,
273  const double altitude) const;
274 
277  virtual double airPressureAtAltitude(const double mslPressure,
278  const double altitude, const double mslTemperature) const;
279 
285  virtual double airPressure(const DtVector& localPosition) const;
286 
290  virtual double mslPressureFromAirPressureAtAltitude(const double airPressure,
291  const double altitude, const double mslTemperature) const;
292 
294  virtual double airTemperatureAltitude(const DtVector& localPosition) const;
295 
297  virtual double airPressureAltitude(const DtVector& localPosition) const;
298 
300  virtual bool airTemperatureAltitudeIsSeaLevel(const DtVector& localPosition) const;
301 
303  virtual bool airPressureAltitudeIsSeaLevel(const DtVector& localPosition) const;
304 
306  virtual double humidity(const DtVector& localPosition) const;
307 
311  virtual double relativeHumidity(const DtVector& localPosition) const;
312 
314  virtual double windSpeed(const DtVector& localPosition) const;
316  virtual double windDirection(const DtVector& localPosition) const;
317 
319  virtual bool windSpeedAndDirectionAtAltitude(const DtVector& localPosition, double altMSL, double& windSpeed, double& windDiection) const;
320 
322  virtual bool visibilityAndObscurantAtAltitude(const DtVector& localPosition, double altMSL, double& visibility, int& obscurant) const;
323 
325  virtual DtVrfTurbulenceLevel airTurbulence(const DtVector& localPosition) const;
326 
346  virtual void lineQueryAtmosphericState(const DtVector& startPosition,
347  const DtVector& endPosition,
348  double minSegmentLength,
349  size_t maxSegmentCount,
350  std::vector<AtmosphericStateSegment>& atmosphericStateSegments) const;
351 
369  virtual void lineQueryCloudState(const DtVector& startPosition,
370  const DtVector& endPosition,
371  std::vector<CloudStateSegment>& cloudStateSegments, double tolerance = 5.0) const;
372 
374  virtual bool lightningPresent(const DtVector& localPosition) const;
375 
377 
382 
385  virtual double precipitationIntensity(const DtVector& localPosition) const;
386  virtual double averagePrecipitationIntensity(const DtChord&) const;
387  virtual DtVrfWeatherPrecipitationType precipitationType(const DtVector& localPosition) const;
388  virtual double snowAccumulationDepth(const DtVector& localPosition) const;
389  virtual double snowDepthOnRoads(const DtVector& localPosition) const;
390  virtual double rainAccumulationDepth(const DtVector& localPosition) const;
391 
409  virtual void lineQueryPrecipitationState(const DtVector& startPosition,
410  const DtVector& endPosition,
411  std::vector<PrecipitationStateSegment>& precipitationStateSegments, double tolerance = 5.0) const;
413 
416 
419  virtual double illuminationFromSky(const DtVector& localPosition) const;
422  virtual double illuminationAtTime(const DtVector& localPosition,
423  const double dateTime) const;
425 
428 
430  virtual double underwaterVisibility(const DtVector& localPosition) const;
433  virtual double averageWaterVisibilityOnChord(const DtChord& path) const;
434  virtual double waterCurrentSpeed(const DtVector& localPosition) const;
435  virtual double waterCurrentDirection(const DtVector& localPosition) const;
436  virtual double waterTemperature(const DtVector& localPosition) const;
437 
439  virtual double tidalOffset(const DtVector& localPosition) const;
441  virtual bool tidalDirection(const DtVector& localPosition) const;
443  virtual unsigned int swellState(const DtVector& localPosition) const;
444  virtual double swellDirection(const DtVector& localPosition) const;
445  virtual unsigned int seaState(const DtVector& localPosition) const;
447  virtual double seaDirection(const DtVector& localPosition) const;
448  virtual double choppiness(const DtVector& localPosition) const;
451  virtual double surgeDepth(const DtVector& localPosition) const;
452 
456  virtual double thermoclineLayer1Depth(const DtVector& localPosition) const;
457  virtual double thermoclineLayer1Permeability(const DtVector& localPosition) const;
458  virtual double thermoclineLayer2Depth(const DtVector& localPosition) const;
459  virtual double thermoclineLayer2Permeability(const DtVector& localPosition) const;
460  virtual double thermoclineLayer3Depth(const DtVector& localPosition) const;
461  virtual double thermoclineLayer3Permeability(const DtVector& localPosition) const;
462  virtual double thermoclineLayer4Depth(const DtVector& localPosition) const;
463  virtual double thermoclineLayer4Permeability(const DtVector& localPosition) const;
464  virtual double thermoclineLayer5Depth(const DtVector& localPosition) const;
465  virtual double thermoclineLayer5Permeability(const DtVector& localPosition) const;
467 
469 
470  const DtSimulationServices* simulationServices() const { return mySimulationServices; };
471 
472 protected:
473 
477  std::vector<DtPoint> chordIntersectsPointsPrecipitationAreas(const DtVector& startPosition,
478  const DtVector& endPosition,
479  const std::vector<DtSimObjectReference>& weatherObjects) const;
480 
483  void setChordPrecipitationStateWeatherObjects(const std::vector<DtPoint>& chordIntersectingPoints,
484  const std::vector<DtSimObjectReference>& weatherObjects,
485  std::vector<PrecipitationStateSegment>& precipitationStateSegments,
486  std::vector<DtChord>& globalWeatherChordSegments, double tolerance = 5.0) const;
487 
490  void setChordPrecipitationStateGlobalWeather(const DtPoint& startPosition,
491  const std::vector<DtChord>& globalWeatherChordSegments,
492  const std::vector<DtSimObjectReference>& weatherObjects,
493  std::vector<PrecipitationStateSegment>& precipitationStateSegments) const;
494 
498  std::vector<DtPoint> chordIntersectsPointsCloudLayers(const DtVector& startPosition,
499  const DtVector& endPosition,
500  const std::vector<DtSimObjectReference>& weatherObjects) const;
501 
504  void setChordCloudStateWeatherObjects(const std::vector<DtPoint>& chordIntersectingPoints,
505  const std::vector<DtSimObjectReference>& weatherObjects,
506  std::vector<CloudStateSegment>& cloudStateSegments,
507  std::vector<DtChord>& globalWeatherChordSegments,
508  double tolerance = 5.0) const;
509 
512  void setChordCloudStateGlobalWeather(const DtPoint& startPosition,
513  const std::vector<DtChord>& globalWeatherChordSegments,
514  const std::vector<DtSimObjectReference>& weatherObjects,
515  std::vector<CloudStateSegment>& cloudStateSegments) const;
516 
520  bool chordIntersectsExtent(const DtChord& chord,
521  const DtExtent& extent,
522  DtVector& intersectionPosition,
523  double& intersectionLengt) const;
524 
527  bool chordIntersectsExtent(const DtChord& chord,
528  const DtExtent& extent,
529  DtPoint& intersectionEntryPoint,
530  DtPoint& intersectionExitPoint) const;
531 
532 protected:
533 
538  virtual double defaultCloudVisibility() const;
539 
541 
546 
551 };
double distance()
Definition: weatherStateProvider.h:172
CloudStateSegment()
Definition: weatherStateProvider.h:101
DtVrfWeatherPrecipitationType
Definition: vrfWeatherStateEnums.h:13
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtVrfTurbulenceLevel airTurbulence()
Definition: weatherStateProvider.h:69
DtVector startPosition()
Definition: weatherStateProvider.h:169
double myPrecipitationIntensity
Definition: weatherStateProvider.h:177
Definition: weatherStateProvider.h:30
void setPrecipitationType(const DtVrfWeatherPrecipitationType &precipitationType)
Definition: weatherStateProvider.h:164
void setDistance(double distance)
Definition: weatherStateProvider.h:173
bool airTemperatureAltitudeIsSeaLevel()
Definition: weatherStateProvider.h:57
Definition: vrfCloudLayerStateEnums.h:16
double distance() const
Definition: weatherStateProvider.h:130
void setWindSpeed(double windSpeed)
Definition: weatherStateProvider.h:67
This class contains the functions that the VRF simulation uses to query the current state of the weat...
Definition: weatherStateProvider.h:185
DtVector myStartPosition
MSL of top of layer.
Definition: weatherStateProvider.h:143
void setAirTurbulence(const DtVrfTurbulenceLevel &airTurbulence)
Definition: weatherStateProvider.h:70
DtVrfWeatherPrecipitationType myPrecipitationType
Definition: weatherStateProvider.h:176
double myCoverFraction
Definition: weatherStateProvider.h:137
bool airPressureAltitudeIsSeaLevel()
Definition: weatherStateProvider.h:54
void setHumidity(double humidity)
Definition: weatherStateProvider.h:61
double myWindSpeed
Definition: weatherStateProvider.h:87
void setStartPosition(const DtVector &startPosition)
Definition: weatherStateProvider.h:170
DtVrfTurbulenceLevel
placeholder. Final version is defined in vrfWeatherStateEnums.h
Definition: weatherStateProvider.h:26
double myVisibility
0-1, portion of sky covered. By default, coverFraction is multiplied by defaul...
Definition: weatherStateProvider.h:140
The CloudStateSegment structure contains the cloud layer data along a partial line section...
Definition: weatherStateProvider.h:98
CloudLayerCloudType cloudType() const
Definition: weatherStateProvider.h:112
bool myAirTemperatureAltitudeIsSeaLevel
Definition: weatherStateProvider.h:84
double airTemperature()
Definition: weatherStateProvider.h:45
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
void setBottomAltitude(double bottomAltitude)
Definition: weatherStateProvider.h:122
void setAirPressureAltitudeIsSeaLevel(bool seaLevel)
Definition: weatherStateProvider.h:55
CloudLayerCloudType
Definition: vrfCloudLayerStateEnums.h:14
double bottomAltitude() const
Definition: weatherStateProvider.h:121
void setWindDirection(double windDirection)
Definition: weatherStateProvider.h:64
PrecipitationStateSegment()
Definition: weatherStateProvider.h:155
const DtSimulationServices * mySimulationServices
Definition: weatherStateProvider.h:540
double myDistance
Definition: weatherStateProvider.h:179
double myTopAltitude
MSL of bottom of layer.
Definition: weatherStateProvider.h:142
void setLocalPosition(const DtVector &localPosition)
Definition: weatherStateProvider.h:76
double myAirTemperatureAltitude
Definition: weatherStateProvider.h:82
void setAirPressure(double airPressure)
Definition: weatherStateProvider.h:43
double myAirTemperature
Definition: weatherStateProvider.h:80
DtVector myLocalPosition
Definition: weatherStateProvider.h:90
void setAirVisibility(double airVisibility)
Definition: weatherStateProvider.h:73
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
The PrecipitationStateSegment structure contains the precipitation data along a partial line section...
Definition: weatherStateProvider.h:152
Contains the enums for cloud layers.
const DtSimulationServices * simulationServices() const
Definition: weatherStateProvider.h:470
double airPressure()
Definition: weatherStateProvider.h:42
double myAirPressure
Definition: weatherStateProvider.h:79
double precipitationIntensity()
Definition: weatherStateProvider.h:166
double coverFraction() const
Definition: weatherStateProvider.h:115
DtVector localPosition()
Definition: weatherStateProvider.h:75
DtVector startPosition() const
Definition: weatherStateProvider.h:127
void setCloudType(const CloudLayerCloudType &cloudType)
Definition: weatherStateProvider.h:113
void setDistance(double distance)
Definition: weatherStateProvider.h:131
The AtmosphericStateSegment structure contains the atmospheric data taken at a certain location...
Definition: weatherStateProvider.h:39
double myAirVisibility
Definition: weatherStateProvider.h:89
Definition: weatherStateProvider.h:32
double topAltitude() const
Definition: weatherStateProvider.h:124
double myKoschmiederConstant
Constants for physical calculations that are computed from other constants, and cached to avoid reco...
Definition: weatherStateProvider.h:550
DtVector myStartPosition
Definition: weatherStateProvider.h:178
void setAirTemperatureAltitude(double airTemperatureAltitude)
Definition: weatherStateProvider.h:52
Definition: weatherStateProvider.h:29
double airTemperatureAltitude()
Definition: weatherStateProvider.h:51
double myAirPressureAltitude
Definition: weatherStateProvider.h:81
double airPressureAltitude()
Definition: weatherStateProvider.h:48
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
Definition: vrfWeatherStateEnums.h:15
void setAirTemperature(double airTemperature)
Definition: weatherStateProvider.h:46
void setCoverFraction(double coverFraction)
Definition: weatherStateProvider.h:116
void setAirPressureAltitude(double airPressureAltitude)
Definition: weatherStateProvider.h:49
A DtChord is a finite line segment in 3-space, represented by two points. Data derived from the two e...
CloudLayerCloudType myCloudType
the cloud state data is a copy of cloudLayerDescription could be refactored to reference the cloudLay...
Definition: weatherStateProvider.h:136
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myAirPressureAltitudeIsSeaLevel
Definition: weatherStateProvider.h:83
DtVrfWeatherPrecipitationType precipitationType()
Definition: weatherStateProvider.h:163
double airVisibility()
Definition: weatherStateProvider.h:72
void setPrecipitationIntensity(double precipitationIntensity)
Definition: weatherStateProvider.h:167
Contains the DtSimObjectReference class declaration.
Definition: weatherStateProvider.h:28
DtVrfTurbulenceLevel myAirTurbulence
Definition: weatherStateProvider.h:88
void setVisibility(double visibility)
Definition: weatherStateProvider.h:119
double humidity()
Definition: weatherStateProvider.h:60
double myHumidity
Definition: weatherStateProvider.h:85
double windDirection()
Definition: weatherStateProvider.h:63
void setTopAltitude(double topAltitude)
Definition: weatherStateProvider.h:125
void setAirTemperatureAltitudeIsSeaLevel(bool seaLevel)
Definition: weatherStateProvider.h:58
double myDistance
Definition: weatherStateProvider.h:144
double myWindDirection
Definition: weatherStateProvider.h:86
Definition: weatherStateProvider.h:31
Definition: point.h:34
double myBottomAltitude
Meters.
Definition: weatherStateProvider.h:141
void setStartPosition(const DtVector &startPosition)
Definition: weatherStateProvider.h:128
double visibility() const
Definition: weatherStateProvider.h:118
double windSpeed()
Definition: weatherStateProvider.h:66

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)