00001 #if !defined(logical_h__INCLUDED_)
00002 #define logical_h__INCLUDED_
00003
00004 #include "Octree_Data_Fuser.h"
00005 #include "octree.h"
00006 #include "math.h"
00007
00008
00009 class Square
00010 {
00011 public:
00012 double p[4][3];
00013 };
00014
00015
00017
00019
00020 int white_node(OctreeNode *node);
00021 int black_node(OctreeNode *node);
00022 void delete_node(OctreeNode *node);
00023 void reset_bitbuckets ();
00024 void input_bitbucket (char invalue, bool flush, FILE *fp);
00025 char output_bitbucket (bool &eof_found, FILE *fp);
00026 OctreeNode* read_node(FILE *tree_structure);
00027 void save_node(OctreeNode *node, FILE *tree_structure);
00028 void octree_volume(OctreeNode *node, int level);
00029 void negative(OctreeNode *node);
00030 OctreeNode* create_node(char color_node);
00031 OctreeNode* copy(OctreeNode *node);
00032 void clean(OctreeNode *node);
00033 void detach(OctreeNode *node);
00034 int check_node_containment(OctreeNode *node, struct cubic_d *worldsize,
00035 vector_d target);
00036 OctreeNode* create_block_node(int level, struct cubic *desired,
00037 struct cubic *worldsize, int maxlevel);
00038 OctreeNode* create_line_node(int level,
00039 vector_i *center,
00040 struct cubic *worldsize, int maxlevel);
00041 OctreeNode* create_view_node(int level,
00042 vector_i *center,
00043 int arraysize,
00044 struct cubic *worldsize, int maxlevel);
00045 OctreeNode* union_node(OctreeNode *node1, OctreeNode *node2);
00046 OctreeNode* intersection_node(OctreeNode *node1, OctreeNode *node2);
00047
00048 OctreeNode* construct_octree_wrapper (struct free_space * pic, int maxlevel, Range_Sensor* jc);
00049 OctreeNode* create_block_wrapper (vector_i center, cubic dimensions, int maxlevel);
00050 OctreeNode* create_line_wrapper (vector_i start, vector_i end, int maxlevel);
00051 OctreeNode* create_view_wrapper (vector_d start, vector_d *end, vector_d *dir, int maxlevel);
00052 void update_cubes_set (std::set<PointClass> &s1, Range_Sensor* camera,
00053 OctreeNode *node, struct cubic_d worldsize);
00054 void extract_cubes_set (std::set<PointClass> &s1, double magnifyfactor,
00055 std::vector<Square> &squarevector, int maxlevel);
00056 void extract_block_node(OctreeNode *node, struct cubic_d *worldsize,
00057 std::vector<Square> &squarevector, bool firstlevel, int colour);
00058 void calc_cube_facets(std::vector<Square> &squarevector, GL_Mesh &mesh);
00059
00060
00061 #endif