VR-Forces 4.10 Class Documentation
 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 
15 #include <matrix/vlVector.h>
18 #include <geometry/chord.h>
20 
21 class DtSimManager;
22 
25 {
31 };
32 
38 {
39 public:
40  double airPressure() { return myAirPressure; }
42 
43  double airTemperature() { return myAirTemperature; }
45 
48 
51 
54 
57 
58  double humidity() { return myHumidity; }
60 
61  double windDirection() { return myWindDirection; }
63 
64  double windSpeed() { return myWindSpeed; }
66 
69 
70  double airVisibility() { return myAirVisibility; }
72 
75 
76 private:
77  double myAirPressure;
83  double myHumidity;
85  double myWindSpeed;
89 };
90 
97 {
98 public:
100  {
102  myCoverFraction = 0;
103  myVisibility = 0;
104  myBottomAltitude = 0;
105  myTopAltitude = 0;
106  myStartPosition = DtVector(0, 0, 0);
107  myDistance = 0;
108  }
109 
112 
113  double coverFraction() const { return myCoverFraction; }
115 
116  double visibility() const { return myVisibility; }
118 
119  double bottomAltitude() const { return myBottomAltitude; }
121 
122  double topAltitude() const { return myTopAltitude; }
124 
127 
128  double distance() const { return myDistance; }
130 
131 private:
136  double myVisibility;
140  double myTopAltitude;
142  double myDistance;
143 };
144 
151 {
152 public:
154  {
157  myStartPosition = DtVector(0, 0, 0);
158  myDistance = 0;
159  }
160 
163 
166 
169 
170  double distance() { return myDistance; }
172 
173 private:
177  double myDistance;
178 };
179 
184 {
185 private:
187 
189  const DtWeatherStateProvider & operator=(const DtWeatherStateProvider &
190  orig);
193 
194 public:
195 
197  DtWeatherStateProvider(const DtSimManager* simManager);
198 
200  virtual ~DtWeatherStateProvider();
201 
205  virtual bool init();
206 
210  virtual void tick();
211 
212  virtual const DtSimManager* simManager() const;
213 
218  static DtWeatherStateProvider* creator(const DtSimManager* simMgr);
219 
221 
230  virtual std::vector<CloudStateSegment> cloudLayers(
231  const DtVector& localPosition) const;
232 
236  virtual double airVisibility(const DtVector& localPosition) const;
237 
240  virtual double visibility(const DtVector& localPosition) const;
241 
243  virtual int visibilityObscurant(const DtVector& localPosition) const;
244 
254  virtual double averageVisibilityOnChord(const DtChord& path) const;
255 
258  virtual double airTemperatureAtAltitude(const double mslTemperature,
259  const double altitude) const;
260 
265  virtual double airTemperature(const DtVector& localPosition) const;
266 
270  virtual double mslTemperatureFromAirTemperatureAtAltitude(const double airTemperature,
271  const double altitude) const;
272 
275  virtual double airPressureAtAltitude(const double mslPressure,
276  const double altitude, const double mslTemperature) const;
277 
283  virtual double airPressure(const DtVector& localPosition) const;
284 
288  virtual double mslPressureFromAirPressureAtAltitude(const double airPressure,
289  const double altitude, const double mslTemperature) const;
290 
292  virtual double airTemperatureAltitude(const DtVector& localPosition) const;
293 
295  virtual double airPressureAltitude(const DtVector& localPosition) const;
296 
298  virtual bool airTemperatureAltitudeIsSeaLevel(const DtVector& localPosition) const;
299 
301  virtual bool airPressureAltitudeIsSeaLevel(const DtVector& localPosition) const;
302 
304  virtual double humidity(const DtVector& localPosition) const;
305 
309  virtual double relativeHumidity(const DtVector& localPosition) const;
310 
312  virtual double windSpeed(const DtVector& localPosition) const;
314  virtual double windDirection(const DtVector& localPosition) const;
315 
317  virtual bool windSpeedAndDirectionAtAltitude(const DtVector& localPosition, double altMSL, double& windSpeed, double& windDiection) const;
318 
320  virtual bool visibilityAndObscurantAtAltitude(const DtVector& localPosition, double altMSL, double& visibility, int& obscurant) const;
321 
323  virtual DtVrfTurbulenceLevel airTurbulence(const DtVector& localPosition) const;
324 
344  virtual void lineQueryAtmosphericState(const DtVector& startPosition,
345  const DtVector& endPosition,
346  double minSegmentLength,
347  size_t maxSegmentCount,
348  std::vector<AtmosphericStateSegment>& atmosphericStateSegments) const;
349 
367  virtual void lineQueryCloudState(const DtVector& startPosition,
368  const DtVector& endPosition,
369  std::vector<CloudStateSegment>& cloudStateSegments, double tolerance = 5.0) const;
370 
372  virtual bool lightningPresent(const DtVector& localPosition) const;
373 
375 
380 
383  virtual double precipitationIntensity(const DtVector& localPosition) const;
384  virtual double averagePrecipitationIntensity(const DtChord&) const;
385  virtual DtVrfWeatherPrecipitationType precipitationType(const DtVector& localPosition) const;
386  virtual double snowAccumulationDepth(const DtVector& localPosition) const;
387  virtual double snowDepthOnRoads(const DtVector& localPosition) const;
388  virtual double rainAccumulationDepth(const DtVector& localPosition) const;
389 
407  virtual void lineQueryPrecipitationState(const DtVector& startPosition,
408  const DtVector& endPosition,
409  std::vector<PrecipitationStateSegment>& precipitationStateSegments, double tolerance = 5.0) const;
411 
414 
417  virtual double illuminationFromSky(const DtVector& localPosition) const;
420  virtual double illuminationAtTime(const DtVector& localPosition,
421  const double dateTime) const;
423 
426 
428  virtual double underwaterVisibility(const DtVector& localPosition) const;
431  virtual double averageWaterVisibilityOnChord(const DtChord& path) const;
432  virtual double waterCurrentSpeed(const DtVector& localPosition) const;
433  virtual double waterCurrentDirection(const DtVector& localPosition) const;
434  virtual double waterTemperature(const DtVector& localPosition) const;
435 
437  virtual double tidalOffset(const DtVector& localPosition) const;
439  virtual bool tidalDirection(const DtVector& localPosition) const;
441  virtual unsigned int swellState(const DtVector& localPosition) const;
442  virtual double swellDirection(const DtVector& localPosition) const;
443  virtual unsigned int seaState(const DtVector& localPosition) const;
445  virtual double seaDirection(const DtVector& localPosition) const;
446  virtual double choppiness(const DtVector& localPosition) const;
449  virtual double surgeDepth(const DtVector& localPosition) const;
450 
454  virtual double thermoclineLayer1Depth(const DtVector& localPosition) const;
455  virtual double thermoclineLayer1Permeability(const DtVector& localPosition) const;
456  virtual double thermoclineLayer2Depth(const DtVector& localPosition) const;
457  virtual double thermoclineLayer2Permeability(const DtVector& localPosition) const;
458  virtual double thermoclineLayer3Depth(const DtVector& localPosition) const;
459  virtual double thermoclineLayer3Permeability(const DtVector& localPosition) const;
460  virtual double thermoclineLayer4Depth(const DtVector& localPosition) const;
461  virtual double thermoclineLayer4Permeability(const DtVector& localPosition) const;
462  virtual double thermoclineLayer5Depth(const DtVector& localPosition) const;
463  virtual double thermoclineLayer5Permeability(const DtVector& localPosition) const;
465 
467 
468 protected:
469 
473  std::vector<DtPoint> chordIntersectsPointsPrecipitationAreas(const DtVector& startPosition,
474  const DtVector& endPosition,
475  const std::vector<DtSharedVrfObjectReference>& weatherObjects) const;
476 
479  void setChordPrecipitationStateWeatherObjects(const std::vector<DtPoint>& chordIntersectingPoints,
480  const std::vector<DtSharedVrfObjectReference>& weatherObjects,
481  std::vector<PrecipitationStateSegment>& precipitationStateSegments,
482  std::vector<DtChord>& globalWeatherChordSegments, double tolerance = 5.0) const;
483 
486  void setChordPrecipitationStateGlobalWeather(const DtPoint& startPosition,
487  const std::vector<DtChord>& globalWeatherChordSegments,
488  const std::vector<DtSharedVrfObjectReference>& weatherObjects,
489  std::vector<PrecipitationStateSegment>& precipitationStateSegments) const;
490 
494  std::vector<DtPoint> chordIntersectsPointsCloudLayers(const DtVector& startPosition,
495  const DtVector& endPosition,
496  const std::vector<DtSharedVrfObjectReference>& weatherObjects) const;
497 
500  void setChordCloudStateWeatherObjects(const std::vector<DtPoint>& chordIntersectingPoints,
501  const std::vector<DtSharedVrfObjectReference>& weatherObjects,
502  std::vector<CloudStateSegment>& cloudStateSegments,
503  std::vector<DtChord>& globalWeatherChordSegments,
504  double tolerance = 5.0) const;
505 
508  void setChordCloudStateGlobalWeather(const DtPoint& startPosition,
509  const std::vector<DtChord>& globalWeatherChordSegments,
510  const std::vector<DtSharedVrfObjectReference>& weatherObjects,
511  std::vector<CloudStateSegment>& cloudStateSegments) const;
512 
516  bool chordIntersectsExtent(const DtChord& chord,
517  const DtExtent& extent,
518  DtVector& intersectionPosition,
519  double& intersectionLengt) const;
520 
523  bool chordIntersectsExtent(const DtChord& chord,
524  const DtExtent& extent,
525  DtPoint& intersectionEntryPoint,
526  DtPoint& intersectionExitPoint) const;
527 
528 protected:
529 
534  virtual double defaultCloudVisibility() const;
535 
537 
542 
547 };
double distance()
Definition: weatherStateProvider.h:170
CloudStateSegment()
Definition: weatherStateProvider.h:99
DtVrfWeatherPrecipitationType
Definition: vrfWeatherStateEnums.h:13
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtVrfTurbulenceLevel airTurbulence()
Definition: weatherStateProvider.h:67
DtVector startPosition()
Definition: weatherStateProvider.h:167
double myPrecipitationIntensity
Definition: weatherStateProvider.h:175
Definition: weatherStateProvider.h:28
void setPrecipitationType(const DtVrfWeatherPrecipitationType &precipitationType)
Definition: weatherStateProvider.h:162
void setDistance(double distance)
Definition: weatherStateProvider.h:171
bool airTemperatureAltitudeIsSeaLevel()
Definition: weatherStateProvider.h:55
Definition: vrfCloudLayerStateEnums.h:16
double distance() const
Definition: weatherStateProvider.h:128
void setWindSpeed(double windSpeed)
Definition: weatherStateProvider.h:65
This class contains the functions that the VRF simulation uses to query the current state of the weat...
Definition: weatherStateProvider.h:183
DtVector myStartPosition
MSL of top of layer.
Definition: weatherStateProvider.h:141
void setAirTurbulence(const DtVrfTurbulenceLevel &airTurbulence)
Definition: weatherStateProvider.h:68
DtVrfWeatherPrecipitationType myPrecipitationType
Definition: weatherStateProvider.h:174
double myCoverFraction
Definition: weatherStateProvider.h:135
bool airPressureAltitudeIsSeaLevel()
Definition: weatherStateProvider.h:52
void setHumidity(double humidity)
Definition: weatherStateProvider.h:59
double myWindSpeed
Definition: weatherStateProvider.h:85
void setStartPosition(const DtVector &startPosition)
Definition: weatherStateProvider.h:168
DtVrfTurbulenceLevel
placeholder. Final version is defined in vrfWeatherStateEnums.h
Definition: weatherStateProvider.h:24
double myVisibility
0-1, portion of sky covered.
Definition: weatherStateProvider.h:138
The CloudStateSegment structure contains the cloud layer data along a partial line section...
Definition: weatherStateProvider.h:96
CloudLayerCloudType cloudType() const
Definition: weatherStateProvider.h:110
bool myAirTemperatureAltitudeIsSeaLevel
Definition: weatherStateProvider.h:82
double airTemperature()
Definition: weatherStateProvider.h:43
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
void setBottomAltitude(double bottomAltitude)
Definition: weatherStateProvider.h:120
void setAirPressureAltitudeIsSeaLevel(bool seaLevel)
Definition: weatherStateProvider.h:53
CloudLayerCloudType
Definition: vrfCloudLayerStateEnums.h:14
double bottomAltitude() const
Definition: weatherStateProvider.h:119
void setWindDirection(double windDirection)
Definition: weatherStateProvider.h:62
const DtSimManager * mySimManager
Definition: weatherStateProvider.h:536
PrecipitationStateSegment()
Definition: weatherStateProvider.h:153
double myDistance
Definition: weatherStateProvider.h:177
double myTopAltitude
MSL of bottom of layer.
Definition: weatherStateProvider.h:140
void setLocalPosition(const DtVector &localPosition)
Definition: weatherStateProvider.h:74
double myAirTemperatureAltitude
Definition: weatherStateProvider.h:80
void setAirPressure(double airPressure)
Definition: weatherStateProvider.h:41
double myAirTemperature
Definition: weatherStateProvider.h:78
DtVector myLocalPosition
Definition: weatherStateProvider.h:88
void setAirVisibility(double airVisibility)
Definition: weatherStateProvider.h:71
#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:150
Contains the enums for cloud layers.
double airPressure()
Definition: weatherStateProvider.h:40
double myAirPressure
Definition: weatherStateProvider.h:77
double precipitationIntensity()
Definition: weatherStateProvider.h:164
double coverFraction() const
Definition: weatherStateProvider.h:113
DtVector localPosition()
Definition: weatherStateProvider.h:73
DtVector startPosition() const
Definition: weatherStateProvider.h:125
void setCloudType(const CloudLayerCloudType &cloudType)
Definition: weatherStateProvider.h:111
void setDistance(double distance)
Definition: weatherStateProvider.h:129
The AtmosphericStateSegment structure contains the atmospheric data taken at a certain location...
Definition: weatherStateProvider.h:37
double myAirVisibility
Definition: weatherStateProvider.h:87
Definition: weatherStateProvider.h:30
double topAltitude() const
Definition: weatherStateProvider.h:122
double myKoschmiederConstant
Constants for physical calculations that are computed from other constants, and cached to avoid reco...
Definition: weatherStateProvider.h:546
DtVector myStartPosition
Definition: weatherStateProvider.h:176
void setAirTemperatureAltitude(double airTemperatureAltitude)
Definition: weatherStateProvider.h:50
Definition: weatherStateProvider.h:27
double airTemperatureAltitude()
Definition: weatherStateProvider.h:49
double myAirPressureAltitude
Definition: weatherStateProvider.h:79
double airPressureAltitude()
Definition: weatherStateProvider.h:46
Definition: vrfWeatherStateEnums.h:15
void setAirTemperature(double airTemperature)
Definition: weatherStateProvider.h:44
void setCoverFraction(double coverFraction)
Definition: weatherStateProvider.h:114
void setAirPressureAltitude(double airPressureAltitude)
Definition: weatherStateProvider.h:47
A DtChord is a finite line segment in 3-space, represented by two points.
CloudLayerCloudType myCloudType
the cloud state data is a copy of cloudLayerDescription could be refactored to reference the cloudLay...
Definition: weatherStateProvider.h:134
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myAirPressureAltitudeIsSeaLevel
Definition: weatherStateProvider.h:81
DtVrfWeatherPrecipitationType precipitationType()
Definition: weatherStateProvider.h:161
double airVisibility()
Definition: weatherStateProvider.h:70
void setPrecipitationIntensity(double precipitationIntensity)
Definition: weatherStateProvider.h:165
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
Definition: weatherStateProvider.h:26
DtVrfTurbulenceLevel myAirTurbulence
Definition: weatherStateProvider.h:86
void setVisibility(double visibility)
Definition: weatherStateProvider.h:117
double humidity()
Definition: weatherStateProvider.h:58
double myHumidity
Definition: weatherStateProvider.h:83
double windDirection()
Definition: weatherStateProvider.h:61
void setTopAltitude(double topAltitude)
Definition: weatherStateProvider.h:123
void setAirTemperatureAltitudeIsSeaLevel(bool seaLevel)
Definition: weatherStateProvider.h:56
double myDistance
Definition: weatherStateProvider.h:142
double myWindDirection
Definition: weatherStateProvider.h:84
Definition: weatherStateProvider.h:29
Definition: point.h:34
double myBottomAltitude
Meters.
Definition: weatherStateProvider.h:139
void setStartPosition(const DtVector &startPosition)
Definition: weatherStateProvider.h:126
double visibility() const
Definition: weatherStateProvider.h:116
double windSpeed()
Definition: weatherStateProvider.h:64

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)