From 623fc8c73de35bef0785f09bae8a3f607f8ed087 Mon Sep 17 00:00:00 2001 From: Wolfgang Draxinger Date: Fri, 27 Apr 2012 20:43:08 +0200 Subject: qt_terr - a simple quadtree based terrain renderer with LOD --- samples/OpenGL/qt_terr/quad.h | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 samples/OpenGL/qt_terr/quad.h (limited to 'samples/OpenGL/qt_terr/quad.h') diff --git a/samples/OpenGL/qt_terr/quad.h b/samples/OpenGL/qt_terr/quad.h new file mode 100644 index 0000000..1c6549a --- /dev/null +++ b/samples/OpenGL/qt_terr/quad.h @@ -0,0 +1,49 @@ +#ifndef QUAD_H +#define QUAD_H + +#include + +class Quad +{ +public: +// double x1,x2, x_mid; +// double y1,y2, y_mid; + + unsigned int v1_offset; + unsigned int v2_offset; + unsigned int v_mid_offset; + + double *x1() { return &(*V)[v1_offset + 0]; } + double *y1() { return &(*V)[v1_offset + 1]; } + double *z1() { return &(*V)[v1_offset + 2]; } + + double *x2() { return &(*V)[v2_offset + 0]; } + double *y2() { return &(*V)[v2_offset + 1]; } + double *z2() { return &(*V)[v2_offset + 2]; } + + double *x_mid() { return &(*V)[v_mid_offset + 0]; } + double *y_mid() { return &(*V)[v_mid_offset + 1]; } + double *z_mid() { return &(*V)[v_mid_offset + 2]; } + + Quad *quads[2][2]; + +public: + Quad(); + Quad(Quad &q); + ~Quad(); + Quad& operator=(Quad &q); + + virtual void split(); + virtual bool is_split(); + + virtual void track_down(double x, double y, int levels); + virtual Quad *get_at(double x, double y, int max_level=0, int level=0); + +protected: + virtual void set_range(double nx1, double nx2, double ny1, double ny2); + + Quad(std::vector*); + std::vector * const V; +}; + +#endif//QUAD_H -- cgit v1.2.3