Subversion Repositories public iLand

Rev

Rev 90 | Rev 106 | 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
 
83 Werner 6
#include "grid.h"
3 Werner 7
 
30 Werner 8
class ImageStamp;
90 Werner 9
class Species;
38 Werner 10
class Stamp;
3 Werner 11
 
12
class Tree
13
{
14
public:
15
    Tree();
40 Werner 16
    void setId(const int id) { m_id=id;}
17
    const int id() const { return m_id; }
39 Werner 18
    void setPosition(const QPointF pos) { m_Position=pos; }
19
    const QPointF position() const { return m_Position; }
3 Werner 20
 
39 Werner 21
    void setDbh(const float dbh) { m_Dbh=dbh; }
22
    const float dbh() const { return m_Dbh; }
3 Werner 23
 
39 Werner 24
    void setHeight(const float height) { m_Height=height; }
25
    const float height() const { return m_Height; }
3 Werner 26
 
27
    const float impact() const { return mImpact; }
15 Werner 28
    const float impactRadius() const { return mImpactRadius; }
3 Werner 29
 
90 Werner 30
    const Species* species() const { return m_species; }
31
    void setSpecies(Species *ts) { m_species=ts; }
39 Werner 32
 
38 Werner 33
    void setup();
34
 
58 Werner 35
    void enableDebugging() { m_debugid = m_id; }
36
 
3 Werner 37
 
39 Werner 38
    // grid based stamp functions
45 Werner 39
    static void setGrid(FloatGrid* gridToStamp, FloatGrid *dominanceGrid) { m_grid = gridToStamp; m_dominanceGrid = dominanceGrid; }
39 Werner 40
    void applyStamp();
40 Werner 41
    double readStamp();
58 Werner 42
    double readStampMul();
43
    void heightGrid();
39 Werner 44
 
40 Werner 45
    // statistics
46
    static void resetStatistics();
47
    static const int statPrints() { return m_statPrint; }
48 Werner 48
    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 49
 
53 Werner 50
    static float lafactor;
58 Werner 51
 
3 Werner 52
private:
58 Werner 53
    bool isDebugging() { return m_id == m_debugid; }
40 Werner 54
    int m_id;
38 Werner 55
    float m_Dbh;
56
    float m_Height;
57
    QPointF m_Position;
3 Werner 58
    float mOwnImpact;
6 Werner 59
    float mImpactArea;
15 Werner 60
    float mImpactRadius;
3 Werner 61
    float mImpact;
38 Werner 62
    // Stamp
39 Werner 63
    const Stamp *m_stamp;
90 Werner 64
    Species *m_species;
39 Werner 65
    static FloatGrid *m_grid;
45 Werner 66
    static FloatGrid *m_dominanceGrid;
58 Werner 67
    // debugging
68
    static int m_debugid;
53 Werner 69
 
40 Werner 70
    // statistics
71
    static int m_statPrint;
48 Werner 72
    static int m_statAboveZ;
105 Werner 73
    static int m_statCreated;
40 Werner 74
    static int m_nextId;
3 Werner 75
};
76
 
77
#endif // TREE_H