VR-Forces 5.0.2 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 #include <vrfutil/rwWindLevels.h>
17 
20 
21 #include <matrix/vlVector.h>
22 #include <geometry/chord.h>
23 
25 
28 {
34 };
35 
41 {
42 public:
43  double airPressure() { return myAirPressure; }
45 
46  double airTemperature() { return myAirTemperature; }
48 
51 
54 
57 
60 
61  double humidity() { return myHumidity; }
63 
64  double windDirection() { return myWindDirection; }
66 
67  double windSpeed() { return myWindSpeed; }
69 
72 
73  double airVisibility() { return myAirVisibility; }
75 
78 
79 private:
80  double myAirPressure;
86  double myHumidity;
88  double myWindSpeed;
92 };
93 
100 {
101 public:
103  {
105  myCoverFraction = 0;
106  myVisibility = 0;
107  myBottomAltitude = 0;
108  myTopAltitude = 0;
109  myStartPosition = DtVector(0, 0, 0);
110  myDistance = 0;
111  }
112 
115 
116  double coverFraction() const { return myCoverFraction; }
118 
119  double visibility() const { return myVisibility; }
121 
122  double bottomAltitude() const { return myBottomAltitude; }
124 
125  double topAltitude() const { return myTopAltitude; }
127 
130 
131  double distance() const { return myDistance; }
133 
134 private:
139  double myVisibility;
143  double myTopAltitude;
145  double myDistance;
146 };
147 
154 {
155 public:
157  {
160  myStartPosition = DtVector(0, 0, 0);
161  myDistance = 0;
162  }
163 
166 
169 
172 
173  double distance() { return myDistance; }
175 
176 private:
180  double myDistance;
181 };
182 
187 {
188 private:
190 
192  const DtWeatherStateProvider & operator=(const DtWeatherStateProvider &
193  orig);
196 
197 public:
198 
200  DtWeatherStateProvider(const DtSimulationServices* simManager);
201 
203  virtual ~DtWeatherStateProvider();
204 
208  virtual bool init();
209 
213  virtual void tick();
214 
215  virtual const DtSimulationServices* simManager() const;
216 
221  static DtWeatherStateProvider* creator(const DtSimulationServices* simMgr);
222 
224 
233  virtual std::vector<CloudStateSegment> cloudLayers(
234  const DtVector& localPosition) const;
235 
239  virtual double airVisibility(const DtVector& localPosition) const;
240 
243  virtual double visibility(const DtVector& localPosition) const;
244 
246  virtual int visibilityObscurant(const DtVector& localPosition) const;
247 
257  virtual double averageVisibilityOnChord(const DtChord& path) const;
258 
261  virtual double airTemperatureAtAltitude(const double mslTemperature,
262  const double altitude) const;
263 
268  virtual double airTemperature(const DtVector& localPosition) const;
269 
273  virtual double mslTemperatureFromAirTemperatureAtAltitude(const double airTemperature,
274  const double altitude) const;
275 
278  virtual double airPressureAtAltitude(const double mslPressure,
279  const double altitude, const double mslTemperature) const;
280 
286  virtual double airPressure(const DtVector& localPosition) const;
287 
291  virtual double mslPressureFromAirPressureAtAltitude(const double airPressure,
292  const double altitude, const double mslTemperature) const;
293 
295  virtual double airTemperatureAltitude(const DtVector& localPosition) const;
296 
298  virtual double airPressureAltitude(const DtVector& localPosition) const;
299 
301  virtual bool airTemperatureAltitudeIsSeaLevel(const DtVector& localPosition) const;
302 
304  virtual bool airPressureAltitudeIsSeaLevel(const DtVector& localPosition) const;
305 
307  virtual double humidity(const DtVector& localPosition) const;
308 
312  virtual double relativeHumidity(const DtVector& localPosition) const;
313 
315  virtual double windSpeed(const DtVector& localPosition) const;
317  virtual double windDirection(const DtVector& localPosition) const;
318 
320  virtual bool windSpeedAndDirectionAtAltitude(const DtVector& localPosition, double altMSL, double& windSpeed, double& windDiection) const;
321 
323  virtual bool visibilityAndObscurantAtAltitude(const DtVector& localPosition, double altMSL, double& visibility, int& obscurant) const;
324 
326  virtual DtRwWindLevels windLevels(const DtVector& localPosition) const;
327 
329  virtual DtVrfTurbulenceLevel airTurbulence(const DtVector& localPosition) const;
330 
350  virtual void lineQueryAtmosphericState(const DtVector& startPosition,
351  const DtVector& endPosition,
352  double minSegmentLength,
353  size_t maxSegmentCount,
354  std::vector<AtmosphericStateSegment>& atmosphericStateSegments) const;
355 
373  virtual void lineQueryCloudState(const DtVector& startPosition,
374  const DtVector& endPosition,
375  std::vector<CloudStateSegment>& cloudStateSegments, double tolerance = 5.0) const;
376 
378  virtual bool lightningPresent(const DtVector& localPosition) const;
379 
381 
386 
389  virtual double precipitationIntensity(const DtVector& localPosition) const;
390  virtual double averagePrecipitationIntensity(const DtChord&) const;
391  virtual DtVrfWeatherPrecipitationType precipitationType(const DtVector& localPosition) const;
392  virtual double snowAccumulationDepth(const DtVector& localPosition) const;
393  virtual double snowDepthOnRoads(const DtVector& localPosition) const;
394  virtual double rainAccumulationDepth(const DtVector& localPosition) const;
395 
413  virtual void lineQueryPrecipitationState(const DtVector& startPosition,
414  const DtVector& endPosition,
415  std::vector<PrecipitationStateSegment>& precipitationStateSegments, double tolerance = 5.0) const;
417 
420 
423  virtual double illuminationFromSky(const DtVector& localPosition) const;
426  virtual double illuminationAtTime(const DtVector& localPosition,
427  const double dateTime) const;
429 
432 
434  virtual double underwaterVisibility(const DtVector& localPosition) const;
437  virtual double averageWaterVisibilityOnChord(const DtChord& path) const;
438  virtual double waterCurrentSpeed(const DtVector& localPosition) const;
439  virtual double waterCurrentDirection(const DtVector& localPosition) const;
440  virtual double waterTemperature(const DtVector& localPosition) const;
441 
443  virtual double tidalOffset(const DtVector& localPosition) const;
445  virtual bool tidalDirection(const DtVector& localPosition) const;
447  virtual unsigned int swellState(const DtVector& localPosition) const;
448  virtual double swellDirection(const DtVector& localPosition) const;
449  virtual unsigned int seaState(const DtVector& localPosition) const;
451  virtual double seaDirection(const DtVector& localPosition) const;
452  virtual double choppiness(const DtVector& localPosition) const;
455  virtual double surgeDepth(const DtVector& localPosition) const;
456 
460  virtual double thermoclineLayer1Depth(const DtVector& localPosition) const;
461  virtual double thermoclineLayer1Permeability(const DtVector& localPosition) const;
462  virtual double thermoclineLayer2Depth(const DtVector& localPosition) const;
463  virtual double thermoclineLayer2Permeability(const DtVector& localPosition) const;
464  virtual double thermoclineLayer3Depth(const DtVector& localPosition) const;
465  virtual double thermoclineLayer3Permeability(const DtVector& localPosition) const;
466  virtual double thermoclineLayer4Depth(const DtVector& localPosition) const;
467  virtual double thermoclineLayer4Permeability(const DtVector& localPosition) const;
468  virtual double thermoclineLayer5Depth(const DtVector& localPosition) const;
469  virtual double thermoclineLayer5Permeability(const DtVector& localPosition) const;
471 
473 
474  const DtSimulationServices* simulationServices() const { return mySimulationServices; };
475 
476 protected:
477 
481  std::vector<DtPoint> chordIntersectsPointsPrecipitationAreas(const DtVector& startPosition,
482  const DtVector& endPosition,
483  const std::vector<DtSimObjectReference>& weatherObjects) const;
484 
487  void setChordPrecipitationStateWeatherObjects(const std::vector<DtPoint>& chordIntersectingPoints,
488  const std::vector<DtSimObjectReference>& weatherObjects,
489  std::vector<PrecipitationStateSegment>& precipitationStateSegments,
490  std::vector<DtChord>& globalWeatherChordSegments, double tolerance = 5.0) const;
491 
494  void setChordPrecipitationStateGlobalWeather(const DtPoint& startPosition,
495  const std::vector<DtChord>& globalWeatherChordSegments,
496  const std::vector<DtSimObjectReference>& weatherObjects,
497  std::vector<PrecipitationStateSegment>& precipitationStateSegments) const;
498 
502  std::vector<DtPoint> chordIntersectsPointsCloudLayers(const DtVector& startPosition,
503  const DtVector& endPosition,
504  const std::vector<DtSimObjectReference>& weatherObjects) const;
505 
508  void setChordCloudStateWeatherObjects(const std::vector<DtPoint>& chordIntersectingPoints,
509  const std::vector<DtSimObjectReference>& weatherObjects,
510  std::vector<CloudStateSegment>& cloudStateSegments,
511  std::vector<DtChord>& globalWeatherChordSegments,
512  double tolerance = 5.0) const;
513 
516  void setChordCloudStateGlobalWeather(const DtPoint& startPosition,
517  const std::vector<DtChord>& globalWeatherChordSegments,
518  const std::vector<DtSimObjectReference>& weatherObjects,
519  std::vector<CloudStateSegment>& cloudStateSegments) const;
520 
524  bool chordIntersectsExtent(const DtChord& chord,
525  const DtExtent& extent,
526  DtVector& intersectionPosition,
527  double& intersectionLengt) const;
528 
531  bool chordIntersectsExtent(const DtChord& chord,
532  const DtExtent& extent,
533  DtPoint& intersectionEntryPoint,
534  DtPoint& intersectionExitPoint) const;
535 
536 protected:
537 
542  virtual double defaultCloudVisibility() const;
543 
545 
550 
555 };
double distance()
Definition: weatherStateProvider.h:173
CloudStateSegment()
Definition: weatherStateProvider.h:102
DtVrfWeatherPrecipitationType
Definition: vrfWeatherStateEnums.h:13
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtVrfTurbulenceLevel airTurbulence()
Definition: weatherStateProvider.h:70
DtVector startPosition()
Definition: weatherStateProvider.h:170
double myPrecipitationIntensity
Definition: weatherStateProvider.h:178
Definition: weatherStateProvider.h:31
void setPrecipitationType(const DtVrfWeatherPrecipitationType &precipitationType)
Definition: weatherStateProvider.h:165
void setDistance(double distance)
Definition: weatherStateProvider.h:174
bool airTemperatureAltitudeIsSeaLevel()
Definition: weatherStateProvider.h:58
Definition: vrfCloudLayerStateEnums.h:16
double distance() const
Definition: weatherStateProvider.h:131
void setWindSpeed(double windSpeed)
Definition: weatherStateProvider.h:68
This class contains the functions that the VRF simulation uses to query the current state of the weat...
Definition: weatherStateProvider.h:186
DtVector myStartPosition
MSL of top of layer.
Definition: weatherStateProvider.h:144
void setAirTurbulence(const DtVrfTurbulenceLevel &airTurbulence)
Definition: weatherStateProvider.h:71
DtVrfWeatherPrecipitationType myPrecipitationType
Definition: weatherStateProvider.h:177
double myCoverFraction
Definition: weatherStateProvider.h:138
bool airPressureAltitudeIsSeaLevel()
Definition: weatherStateProvider.h:55
void setHumidity(double humidity)
Definition: weatherStateProvider.h:62
double myWindSpeed
Definition: weatherStateProvider.h:88
void setStartPosition(const DtVector &startPosition)
Definition: weatherStateProvider.h:171
DtVrfTurbulenceLevel
placeholder. Final version is defined in vrfWeatherStateEnums.h
Definition: weatherStateProvider.h:27
double myVisibility
0-1, portion of sky covered. By default, coverFraction is multiplied by defaul...
Definition: weatherStateProvider.h:141
The CloudStateSegment structure contains the cloud layer data along a partial line section...
Definition: weatherStateProvider.h:99
CloudLayerCloudType cloudType() const
Definition: weatherStateProvider.h:113
bool myAirTemperatureAltitudeIsSeaLevel
Definition: weatherStateProvider.h:85
double airTemperature()
Definition: weatherStateProvider.h:46
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
void setBottomAltitude(double bottomAltitude)
Definition: weatherStateProvider.h:123
void setAirPressureAltitudeIsSeaLevel(bool seaLevel)
Definition: weatherStateProvider.h:56
CloudLayerCloudType
Definition: vrfCloudLayerStateEnums.h:14
double bottomAltitude() const
Definition: weatherStateProvider.h:122
void setWindDirection(double windDirection)
Definition: weatherStateProvider.h:65
PrecipitationStateSegment()
Definition: weatherStateProvider.h:156
const DtSimulationServices * mySimulationServices
Definition: weatherStateProvider.h:544
double myDistance
Definition: weatherStateProvider.h:180
double myTopAltitude
MSL of bottom of layer.
Definition: weatherStateProvider.h:143
void setLocalPosition(const DtVector &localPosition)
Definition: weatherStateProvider.h:77
double myAirTemperatureAltitude
Definition: weatherStateProvider.h:83
void setAirPressure(double airPressure)
Definition: weatherStateProvider.h:44
double myAirTemperature
Definition: weatherStateProvider.h:81
DtVector myLocalPosition
Definition: weatherStateProvider.h:91
void setAirVisibility(double airVisibility)
Definition: weatherStateProvider.h:74
#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:153
Contains the enums for cloud layers.
const DtSimulationServices * simulationServices() const
Definition: weatherStateProvider.h:474
double airPressure()
Definition: weatherStateProvider.h:43
double myAirPressure
Definition: weatherStateProvider.h:80
double precipitationIntensity()
Definition: weatherStateProvider.h:167
double coverFraction() const
Definition: weatherStateProvider.h:116
DtVector localPosition()
Definition: weatherStateProvider.h:76
DtVector startPosition() const
Definition: weatherStateProvider.h:128
void setCloudType(const CloudLayerCloudType &cloudType)
Definition: weatherStateProvider.h:114
void setDistance(double distance)
Definition: weatherStateProvider.h:132
The AtmosphericStateSegment structure contains the atmospheric data taken at a certain location...
Definition: weatherStateProvider.h:40
double myAirVisibility
Definition: weatherStateProvider.h:90
Definition: weatherStateProvider.h:33
double topAltitude() const
Definition: weatherStateProvider.h:125
double myKoschmiederConstant
Constants for physical calculations that are computed from other constants, and cached to avoid reco...
Definition: weatherStateProvider.h:554
DtVector myStartPosition
Definition: weatherStateProvider.h:179
void setAirTemperatureAltitude(double airTemperatureAltitude)
Definition: weatherStateProvider.h:53
Definition: weatherStateProvider.h:30
double airTemperatureAltitude()
Definition: weatherStateProvider.h:52
double myAirPressureAltitude
Definition: weatherStateProvider.h:82
double airPressureAltitude()
Definition: weatherStateProvider.h:49
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:90
Definition: vrfWeatherStateEnums.h:15
void setAirTemperature(double airTemperature)
Definition: weatherStateProvider.h:47
void setCoverFraction(double coverFraction)
Definition: weatherStateProvider.h:117
void setAirPressureAltitude(double airPressureAltitude)
Definition: weatherStateProvider.h:50
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:137
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myAirPressureAltitudeIsSeaLevel
Definition: weatherStateProvider.h:84
DtVrfWeatherPrecipitationType precipitationType()
Definition: weatherStateProvider.h:164
double airVisibility()
Definition: weatherStateProvider.h:73
void setPrecipitationIntensity(double precipitationIntensity)
Definition: weatherStateProvider.h:168
Contains the DtSimObjectReference class declaration.
Definition: weatherStateProvider.h:29
DtVrfTurbulenceLevel myAirTurbulence
Definition: weatherStateProvider.h:89
void setVisibility(double visibility)
Definition: weatherStateProvider.h:120
double humidity()
Definition: weatherStateProvider.h:61
double myHumidity
Definition: weatherStateProvider.h:86
double windDirection()
Definition: weatherStateProvider.h:64
void setTopAltitude(double topAltitude)
Definition: weatherStateProvider.h:126
Definition: rwWindLevels.h:17
void setAirTemperatureAltitudeIsSeaLevel(bool seaLevel)
Definition: weatherStateProvider.h:59
double myDistance
Definition: weatherStateProvider.h:145
double myWindDirection
Definition: weatherStateProvider.h:87
Definition: weatherStateProvider.h:32
Definition: point.h:34
double myBottomAltitude
Meters.
Definition: weatherStateProvider.h:142
void setStartPosition(const DtVector &startPosition)
Definition: weatherStateProvider.h:129
double visibility() const
Definition: weatherStateProvider.h:119
double windSpeed()
Definition: weatherStateProvider.h:67

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)