Subversion Repositories public iLand

Rev

Rev 48 | Rev 58 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1
 
3 Werner 2
#ifndef TREE_H
3
#define TREE_H
4
#include <QPointF>
5
 
16 Werner 6
#include "core/grid.h"
7
#include "tools/expression.h"
3 Werner 8
 
38 Werner 9
 
30 Werner 10
class ImageStamp;
38 Werner 11
class TreeSpecies;
12
class Stamp;
3 Werner 13
 
14
class Tree
15
{
16
public:
17
    Tree();
40 Werner 18
    void setId(const int id) { m_id=id;}
19
    const int id() const { return m_id; }
39 Werner 20
    void setPosition(const QPointF pos) { m_Position=pos; }
21
    const QPointF position() const { return m_Position; }
3 Werner 22
 
39 Werner 23
    void setDbh(const float dbh) { m_Dbh=dbh; }
24
    const float dbh() const { return m_Dbh; }
3 Werner 25
 
39 Werner 26
    void setHeight(const float height) { m_Height=height; }
27
    const float height() const { return m_Height; }
3 Werner 28
 
29
    const float impact() const { return mImpact; }
15 Werner 30
    const float impactRadius() const { return mImpactRadius; }
3 Werner 31
 
39 Werner 32
    const TreeSpecies* species() const { return m_species; }
33
    void setSpecies(TreeSpecies *ts) { m_species=ts; }
34
 
38 Werner 35
    void setup();
36
 
39 Werner 37
    // image based stamp functions
30 Werner 38
    void stampOnGrid(ImageStamp& stamp, FloatGrid& grid);
39
    float retrieveValue(ImageStamp& stamp, FloatGrid& grid);
3 Werner 40
 
39 Werner 41
    // grid based stamp functions
45 Werner 42
    static void setGrid(FloatGrid* gridToStamp, FloatGrid *dominanceGrid) { m_grid = gridToStamp; m_dominanceGrid = dominanceGrid; }
39 Werner 43
    void applyStamp();
40 Werner 44
    double readStamp();
39 Werner 45
 
40 Werner 46
    // statistics
47
    static void resetStatistics();
48
    static const int statPrints() { return m_statPrint; }
48 Werner 49
    static const int statAboveZ() { return m_statAboveZ; } ///< # of trees that are above Z*, i.e. the top is above the dominant height grid
40 Werner 50
 
12 Werner 51
    static Expression rScale;
52
    static Expression hScale;
53 Werner 53
    static float lafactor;
3 Werner 54
private:
40 Werner 55
    int m_id;
38 Werner 56
    float m_Dbh;
57
    float m_Height;
58
    QPointF m_Position;
3 Werner 59
    float mOwnImpact;
6 Werner 60
    float mImpactArea;
15 Werner 61
    float mImpactRadius;
3 Werner 62
    float mImpact;
38 Werner 63
    // Stamp
39 Werner 64
    const Stamp *m_stamp;
38 Werner 65
    TreeSpecies *m_species;
39 Werner 66
    static FloatGrid *m_grid;
45 Werner 67
    static FloatGrid *m_dominanceGrid;
53 Werner 68
 
40 Werner 69
    // statistics
70
    static int m_statPrint;
48 Werner 71
    static int m_statAboveZ;
40 Werner 72
    static int m_nextId;
3 Werner 73
};
74
 
75
#endif // TREE_H