VR-Forces 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 
76  DtVector localPosition() { return myLocalPosition; }
78 
79 private:
80  double myAirPressure;
86  double myHumidity;
88  double myWindSpeed;
91  DtVector myLocalPosition;
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 
128  DtVector startPosition() const { return myStartPosition; }
130 
131  double distance() const { return myDistance; }
133 
134 private:
139  double myVisibility;
143  double myTopAltitude;
144  DtVector myStartPosition;
145  double myDistance;
146 };
147 
154 {
155 public:
157  {
160  myStartPosition = DtVector(0, 0, 0);
161  myDistance = 0;
162  }
163 
166 
169 
170  DtVector startPosition() { return myStartPosition; }
172 
173  double distance() { return myDistance; }
175 
176 private:
179  DtVector myStartPosition;
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 double humidity(const DtVector& localPosition) const;
302 
306  virtual double relativeHumidity(const DtVector& localPosition) const;
307 
309  virtual double windSpeed(const DtVector& localPosition) const;
311  virtual double windDirection(const DtVector& localPosition) const;
312 
314  virtual bool windSpeedAndDirectionAtAltitude(const DtVector& localPosition, double altMSL, double& windSpeed, double& windDiection) const;
315 
317  virtual bool visibilityAndObscurantAtAltitude(const DtVector& localPosition, double altMSL, double& visibility, int& obscurant) const;
318 
320  virtual DtRwWindLevels windLevels(const DtVector& localPosition) 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 
375  virtual void lineQueryCloudState(const DtVector& startPosition,
376  const DtVector& endPosition,
377  std::vector<CloudStateSegment>& cloudStateSegments,
378  double tolerance = 5.0) const;
379 
381  virtual bool lightningPresent(const DtVector& localPosition) const;
382 
384 
389  virtual int blowingParticulateMatter(const DtVector& localPosition) const;
390 
393  virtual double precipitationIntensity(const DtVector& localPosition) const;
394  virtual double averagePrecipitationIntensity(const DtChord&) const;
395  virtual DtVrfWeatherPrecipitationType precipitationType(const DtVector& localPosition) const;
396  virtual double snowAccumulationDepth(const DtVector& localPosition) const;
397  virtual double snowDepthOnRoads(const DtVector& localPosition) const;
398  virtual double rainAccumulationDepth(const DtVector& localPosition) const;
399 
425  virtual void lineQueryPrecipitationState(const DtVector& startPosition,
426  const DtVector& endPosition,
427  std::vector<PrecipitationStateSegment>& precipitationStateSegments,
428  double tolerance = 5.0) const;
430 
433 
436  virtual double illuminationFromSky(const DtVector& localPosition) const;
439  virtual double illuminationAtTime(const DtVector& localPosition,
440  const double dateTime) const;
442 
445 
447  virtual double underwaterVisibility(const DtVector& localPosition) const;
450  virtual double averageWaterVisibilityOnChord(const DtChord& path) const;
451  virtual double waterCurrentSpeed(const DtVector& localPosition) const;
452  virtual double waterCurrentDirection(const DtVector& localPosition) const;
453  virtual double waterTemperature(const DtVector& localPosition) const;
454 
456  virtual double tidalOffset(const DtVector& localPosition) const;
458  virtual unsigned int swellState(const DtVector& localPosition) const;
459  virtual double swellDirection(const DtVector& localPosition) const;
460  virtual unsigned int seaState(const DtVector& localPosition) const;
462  virtual double seaDirection(const DtVector& localPosition) const;
463  virtual double choppiness(const DtVector& localPosition) const;
466  virtual double surgeDepth(const DtVector& localPosition) const;
468  virtual double depthOffset(const DtVector& localPosition) const;
470  virtual double windFetch(const DtVector& localPosition) const;
471 
475  virtual double thermoclineLayer1Depth(const DtVector& localPosition) const;
476  virtual double thermoclineLayer1Permeability(const DtVector& localPosition) const;
477  virtual double thermoclineLayer2Depth(const DtVector& localPosition) const;
478  virtual double thermoclineLayer2Permeability(const DtVector& localPosition) const;
479  virtual double thermoclineLayer3Depth(const DtVector& localPosition) const;
480  virtual double thermoclineLayer3Permeability(const DtVector& localPosition) const;
481  virtual double thermoclineLayer4Depth(const DtVector& localPosition) const;
482  virtual double thermoclineLayer4Permeability(const DtVector& localPosition) const;
483  virtual double thermoclineLayer5Depth(const DtVector& localPosition) const;
484  virtual double thermoclineLayer5Permeability(const DtVector& localPosition) const;
486 
488 
489  const DtSimulationServices* simulationServices() const { return mySimulationServices; };
490 
491 protected:
492 
496  std::vector<DtChord> segmentsIntersectingPrecipitationAreas(const DtVector& startPosition,
497  const DtVector& endPosition,
498  const std::vector<DtSimObjectReference>& weatherObjects,
499  double tolerance) const;
500 
503  void setPrecipitationStateForWeatherObjectsSegments(const std::vector<DtChord>& chordIntersectingSegments,
504  const std::vector<DtSimObjectReference>& weatherObjects,
505  std::vector<PrecipitationStateSegment>& precipitationStateSegments,
506  std::vector<DtChord>& globalWeatherChordIntersectingSegments,
507  double tolerance) const;
508 
511  void setPrecipitationStateForGlobalWeatherSegments(const DtVector& startPosition,
512  const std::vector<DtChord>& globalWeatherChordIntersectingSegments,
513  const std::vector<DtSimObjectReference>& weatherObjects,
514  std::vector<PrecipitationStateSegment>& precipitationStateSegments,
515  double tolerance) const;
516 
520  std::vector<DtChord> segmentsIntersectingCloudLayers(const DtVector& startPosition,
521  const DtVector& endPosition,
522  const std::vector<DtSimObjectReference>& weatherObjects,
523  double tolerance) const;
524 
527  void setCloudStateForWeatherObjectsSegments(const std::vector<DtChord>& chordIntersectingSegments,
528  const std::vector<DtSimObjectReference>& weatherObjects,
529  std::vector<CloudStateSegment>& cloudStateSegments,
530  std::vector<DtChord>& globalWeatherChordIntersectingSegments,
531  double tolerance) const;
532 
535  void setCloudStateForGlobalWeatherSegments(const DtVector& startPosition,
536  const std::vector<DtChord>& globalWeatherChordIntersectingSegments,
537  const std::vector<DtSimObjectReference>& weatherObjects,
538  std::vector<CloudStateSegment>& cloudStateSegments,
539  double tolerance) const;
540 
544  bool chordIntersectsExtent(const DtChord& chord,
545  const DtExtent& extent,
546  DtPoint& intersectionEntryPoint,
547  DtPoint& intersectionExitPoint,
548  bool& chordPt0InExtent,
549  bool& chordPt1InExtent) const;
550 
551 protected:
552 
557  virtual double defaultCloudVisibility() const;
558 
560 
565 
570 };
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:559
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:489
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:569
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:96
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 Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)