LCOV - code coverage report
Current view: top level - util/cgm - KDDTreeNode.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 0 5 0.0 %
Date: 2020-06-30 00:58:45 Functions: 0 10 0.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : //-----------------------------------------------------------------
       2                 :            : //- Class:   KDDTreeNode
       3                 :            : //- Author:  Kevin Albrecht 
       4                 :            : //- Created: 13 May 2003
       5                 :            : //- Updated: 8 Feb 2004
       6                 :            : //-
       7                 :            : //- Description:
       8                 :            : //-   Node for dynamic version of the k-d tree, where k=3.
       9                 :            : //-
      10                 :            : //- References:
      11                 :            : //-
      12                 :            : //-   Hanan Samet.  Design and Analysis of Spatial Data Structures.
      13                 :            : //-      Addison-Wesley, Reading, MA, 1990.
      14                 :            : //-
      15                 :            : //-   Jon Louis Bentley. Multidimensional binary search trees used
      16                 :            : //-     for associative searching. In Communications of the ACM,
      17                 :            : //-     18(9), pages 509-517, September 1975.
      18                 :            : //-----------------------------------------------------------------
      19                 :            : 
      20                 :            : #ifndef KDDTREENODE_HPP
      21                 :            : #define KDDTREENODE_HPP
      22                 :            : 
      23                 :            : #include "CubitDefines.h"
      24                 :            : #include "GeometryDefines.h"
      25                 :            : #include "CubitBox.hpp"
      26                 :            : 
      27                 :            : //- constants that show the direction of discrimination
      28                 :            : enum DIMENSION
      29                 :            : {
      30                 :            :   DIMX, DIMY, DIMZ
      31                 :            : };
      32                 :            : 
      33                 :            : //- constants used to determine left vs. right
      34                 :            : enum DIRECTION
      35                 :            : {
      36                 :            :   DIR_NULL, DIR_EITHER, DIR_LEFT, DIR_RIGHT
      37                 :            : };
      38                 :            : 
      39                 :            : enum DISTDATA
      40                 :            : {
      41                 :            :   DD_SAFETY, DD_LEAF
      42                 :            : };
      43                 :            : 
      44                 :            : template <class X> class DLIList;
      45                 :            : 
      46                 :            : template <class Y> class KDDTreeNode 
      47                 :            : {
      48                 :            :   private:
      49                 :            :     DIMENSION myDisc;         // dimension in which this node discriminates
      50                 :            :     double myDist;            // used for nearest neigbhor searches
      51                 :            :     DISTDATA myDistData;      // also used for nearest neigbhor searches
      52                 :            : 
      53                 :            :   public:
      54                 :            :     KDDTreeNode<Y> *parent; // parent of this node
      55                 :            :     KDDTreeNode<Y> *left;   // left subtree
      56                 :            :     KDDTreeNode<Y> *right;  // right subtree
      57                 :            :     double x, y, z;         // coordinates of center point
      58                 :            :     Y data;                 // data with bounding box centered on this node
      59                 :            :     CubitBoolean valid;     // false if this node should be deleted
      60                 :            : 
      61                 :            :     CubitBox safetyBox;   // bounding box of myData and the safetyBox's of children
      62                 :            :     CubitBox boundingBox; // bounding box of myData
      63                 :            : 
      64                 :            :     //- Constructor/Destructor
      65                 :            :     KDDTreeNode (Y aData, DIMENSION aDisc = DIMX);
      66                 :            :     ~KDDTreeNode ();
      67                 :            : 
      68                 :            :     //- Get/set the child in the direction of "dir"
      69                 :            :     KDDTreeNode<Y> *get_child (DIRECTION dir) const;
      70                 :            :     void set_child (KDDTreeNode<Y> *node, DIRECTION dir);
      71                 :            : 
      72                 :            :     //- Get/set the "myDist" value
      73                 :          0 :     double get_dist () const { return myDist; }
      74                 :          0 :     void set_dist (double dist) { myDist = dist; }
      75                 :            : 
      76                 :            :     //- Get/set the "myDistData" value
      77                 :          0 :     DISTDATA get_dist_data () const { return myDistData; }
      78                 :          0 :     void set_dist_data (DISTDATA distData) { myDistData = distData; }
      79                 :            : 
      80                 :            :     //- Get/set the discriminating dimension of this node
      81                 :            :     DIMENSION get_disc () const { return myDisc; }
      82                 :          0 :     void set_disc (DIMENSION dim) { myDisc = dim; }
      83                 :            : 
      84                 :            :     //- Get the discriminator for the depth below this node
      85                 :            :     DIMENSION next_disc () const;
      86                 :            : 
      87                 :            :     //- The KD_COMPARE function as defined by Samet
      88                 :            :     DIRECTION compare (KDDTreeNode<Y> *Q) const;
      89                 :            :     DIRECTION compare_with_equality (KDDTreeNode<Y> *Q) const;
      90                 :            : };
      91                 :            : 
      92                 :            : #include "KDDTreeNode.cpp"
      93                 :            : 
      94                 :            : #endif

Generated by: LCOV version 1.11