iLand
lightroom.h
Go to the documentation of this file.
1#ifndef LIGHTROOM_H
2#define LIGHTROOM_H
3
4#include "grid.h"
5#include "solarradiation.h"
6#include "hemigrid.h"
7#include "expression.h"
8
10{
11public:
12 LightRoomObject(): m_radiusFormula(0) {}
17 int hittest(const double p_x, const double p_y, const double p_z,
18 const double azimuth_rad, const double elevation_rad);
24 void setuptree(const double height, const double crownheight, const QString &formula);
26 bool noHitGuaranteed(const double p_x, const double p_y, const double p_z);
27 double maxHeight() const { return m_height; }
28 double maxRadius() const { return m_baseradius; }
29private:
30 Expression *m_radiusFormula;
31 double m_baseradius;
32 double m_height;
33 double m_crownheight;
34 QVector<double> m_treeHeights;
35};
36
42{
43public:
44 LightRoom();
45 ~LightRoom() { if (m_roomObject) delete m_roomObject; }
47 void setup(const double dimx, const double dimy, const double dimz,
48 const double cellsize, const double hemigridsize,
49 const double latitude=48., const double diffus_frac=0.5);
50 void setLightRoomObject(LightRoomObject *lro) { if (m_roomObject) delete m_roomObject; m_roomObject = lro; }
51 void setAggregationMode(const int mode ) { m_aggregationMode = mode; }
53 double calculateGridAtPoint(const double p_x, const double p_y, const double p_z, bool fillShadowGrid=true);
56 void calculateFullGrid();
58 const HemiGrid &shadowGrid() const { return m_shadowGrid; }
59 const HemiGrid &solarGrid() const { return m_solarGrid; }
60 const FloatGrid &result() const { return m_2dvalues; }
61 double centerValue() const { return m_centervalue; }
62
63private:
64 //Grid< QVector<float> > m_3dvalues; ///< storage for resulting 3d light values
65 FloatGrid m_2dvalues;
66 int m_countX;
67 int m_countY;
68 int m_countZ;
69 double m_cellsize;
70 double m_solarrad_factor;
71 HemiGrid m_solarGrid;
72 HemiGrid m_shadowGrid;
73 double m_centervalue;
74 int m_aggregationMode;
75
76 LightRoomObject *m_roomObject;
77};
78
79#endif // LIGHTROOM_H
An expression engine for mathematical expressions provided as strings.
Definition: expression.h:29
HemiGrid represents a grid covering the hemisphehre as well as some operations.
Definition: hemigrid.h:13
virtual room to do some light-experiments.
Definition: lightroom.h:42
const FloatGrid & result() const
Definition: lightroom.h:60
LightRoom()
Definition: lightroom.cpp:7
double calculateGridAtPoint(const double p_x, const double p_y, const double p_z, bool fillShadowGrid=true)
calculate a full hemiview image from given point
Definition: lightroom.cpp:56
void setLightRoomObject(LightRoomObject *lro)
Definition: lightroom.h:50
~LightRoom()
Definition: lightroom.h:45
void setAggregationMode(const int mode)
Definition: lightroom.h:51
void calculateFullGrid()
calculate a hemigrid for each node of the grid (store results in m_3dvalues).
Definition: lightroom.cpp:108
const HemiGrid & shadowGrid() const
access to the hemigrid
Definition: lightroom.h:58
double centerValue() const
Definition: lightroom.h:61
void setup(const double dimx, const double dimy, const double dimz, const double cellsize, const double hemigridsize, const double latitude=48., const double diffus_frac=0.5)
setup the spatial grid.
Definition: lightroom.cpp:22
const HemiGrid & solarGrid() const
Definition: lightroom.h:59
Definition: lightroom.h:10
bool noHitGuaranteed(const double p_x, const double p_y, const double p_z)
returns true if there is no way that a ray hits the object starting from p.
Definition: lightroom.cpp:335
int hittest(const double p_x, const double p_y, const double p_z, const double azimuth_rad, const double elevation_rad)
Test if the ray starting at "p" hits the object.
Definition: lightroom.cpp:246
double maxRadius() const
Definition: lightroom.h:28
double maxHeight() const
Definition: lightroom.h:27
LightRoomObject()
Definition: lightroom.h:12
void setuptree(const double height, const double crownheight, const QString &formula)
sets up a tree as the obstacle.
Definition: lightroom.cpp:184
~LightRoomObject()
Definition: lightroom.cpp:178