1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /*!
- * \file qtree.c
- *
- * \author
- * H. Mitasova, I. Kosinovsky, D. Gerdes, Fall 1993,
- * University of Illinois and
- * US Army Construction Engineering Research Lab
- *
- * \author H. Mitasova (University of Illinois),
- * \author I. Kosinovsky, (USA-CERL)
- * \author D.Gerdes (USA-CERL)
- *
- * \author updated/checked by Mitasova Nov. 96 (no changes necessary)
- *
- * \copyright
- * (C) 1993-1996 by Helena Mitasova and the GRASS Development Team
- *
- * \copyright
- * This program is free software under the
- * GNU General Public License (>=v2).
- * Read the file COPYING that comes with GRASS for details.
- */
- #ifndef TREE_H
- #define TREE_H
- #define VOID_T char
- /*!
- * Function table for a tree
- *
- * From object oriented point of view, this structure represents
- * a class or a virtual table of functions/methods for a class.
- */
- struct multfunc
- {
- int (*compare) ();
- struct quaddata **(*divide_data) ();
- int (*add_data) ();
- int (*intersect) ();
- int (*division_check) ();
- int (*get_points) ();
- };
- struct tree_info
- {
- struct multfunc *functions;
- double dmin;
- int kmax;
- struct multtree *root;
- };
- struct multtree
- {
- struct quaddata *data;
- struct multtree **leafs;
- struct multtree *parent;
- int multant;
- };
- struct multfunc *MT_functions_new(int (*)(struct triple *, struct quaddata *),
- struct quaddata **(*)(struct quaddata *,
- int, double),
- int (*)(struct triple *, struct quaddata *,
- double), int (*)(struct quaddata *,
- struct quaddata *),
- int (*)(struct quaddata *, int),
- int (*)(struct quaddata *,
- struct quaddata *, int));
- struct tree_info *MT_tree_info_new(struct multtree *, struct multfunc *,
- double, int);
- struct multtree *MT_tree_new(struct quaddata *, struct multtree **,
- struct multtree *, int);
- int MT_insert(struct triple *, struct tree_info *, struct multtree *, int);
- int MT_divide(struct tree_info *, struct multtree *, int);
- int MT_region_data(struct tree_info *, struct multtree *, struct quaddata *,
- int, int);
- #endif
|