Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

bintree.c File Reference

#include <volume_io/internal_volume_io.h>
#include <bicpl/data_structures.h>

Include dependency graph for bintree.c:

Include dependency graph

Go to the source code of this file.

Functions

private Status io_range (FILE *file, IO_types direction, File_formats format, range_struct *range)
private Status output_bintree_node (FILE *file, File_formats format, bintree_node_struct *node)
private Status input_bintree_node (FILE *file, File_formats format, bintree_node_struct **node)
public void initialize_bintree (Real x_min, Real x_max, Real y_min, Real y_max, Real z_min, Real z_max, bintree_struct_ptr bintree)
public void delete_bintree_node (bintree_node_struct *node)
private void recursive_delete_bintree (bintree_node_struct *node)
public void delete_bintree (bintree_struct_ptr bintree)
public void get_bintree_limits (bintree_struct_ptr bintree, range_struct *limits)
private void set_bintree_child (bintree_node_struct *node, int which, bintree_node_struct *child)
public bintree_node_structcreate_bintree_internal_node (int split_coord, Real split_position, bintree_node_struct *left, bintree_node_struct *right)
public bintree_node_structcreate_bintree_leaf (Real split_position, int n_objects, int object_list[])
public BOOLEAN bintree_node_is_leaf (bintree_node_struct *node)
public int get_bintree_leaf_objects (bintree_node_struct *node, int *object_list[])
public BOOLEAN get_bintree_left_child_ptr (bintree_node_struct *node, bintree_node_struct ***ptr_to_left_child)
public BOOLEAN get_bintree_left_child (bintree_node_struct *node, bintree_node_struct **left_child)
public BOOLEAN get_bintree_right_child_ptr (bintree_node_struct *node, bintree_node_struct ***ptr_to_right_child)
public BOOLEAN get_bintree_right_child (bintree_node_struct *node, bintree_node_struct **right_child)
public int get_node_split_axis (bintree_node_struct *node)
public Real get_node_split_position (bintree_node_struct *node)
public BOOLEAN point_within_range (Point *point, range_struct *range)
public Real range_volume (range_struct *range)
public Real range_surface_area (range_struct *range)
public Status io_bintree (FILE *file, IO_types direction, File_formats format, bintree_struct_ptr bintree)
private Status output_leaf_node (FILE *file, File_formats format, bintree_node_struct *node)


Function Documentation

public BOOLEAN bintree_node_is_leaf bintree_node_struct node  ) 
 

Definition at line 324 of file bintree.c.

References LEAF_SIGNAL, bintree_node_struct::node_info, and SUBDIVISION_AXIS_BITS.

Referenced by get_bintree_left_child_ptr(), get_bintree_right_child_ptr(), output_bintree_node(), recursive_efficiency_count(), recursive_find_closest_point(), recursive_find_closest_vertex(), and recursive_intersect_ray().

public bintree_node_struct* create_bintree_internal_node int  split_coord,
Real  split_position,
bintree_node_struct left,
bintree_node_struct right
 

Definition at line 210 of file bintree.c.

References LEFT_CHILD, LEFT_CHILD_EXISTS, bintree_node_struct::node_info, RIGHT_CHILD, RIGHT_CHILD_EXISTS, set_bintree_child(), and bintree_node_struct::split_position.

Referenced by input_bintree_node(), and split_node().

public bintree_node_struct* create_bintree_leaf Real  split_position,
int  n_objects,
int  object_list[]
 

Definition at line 271 of file bintree.c.

References bintree_node_struct::data, LEAF_SIGNAL, MAX_NODE_INFO_OBJECTS, bintree_node_struct::node_info, NODE_INFO_OBJECTS_SHIFT, and bintree_node_struct::split_position.

Referenced by input_bintree_node(), split_node(), and subdivide_bintree().

public void delete_bintree bintree_struct_ptr  bintree  ) 
 

Definition at line 135 of file bintree.c.

References recursive_delete_bintree(), and bintree_struct::root.

Referenced by delete_the_bintree().

public void delete_bintree_node bintree_node_struct node  ) 
 

Definition at line 90 of file bintree.c.

Referenced by recursive_delete_bintree(), and split_node().

public int get_bintree_leaf_objects bintree_node_struct node,
int *  object_list[]
 

Definition at line 344 of file bintree.c.

References bintree_node_struct::data, bintree_node_struct::node_info, and NODE_INFO_OBJECTS_SHIFT.

Referenced by output_leaf_node(), recursive_efficiency_count(), recursive_find_closest_point(), recursive_find_closest_vertex(), recursive_intersect_ray(), and split_node().

public BOOLEAN get_bintree_left_child bintree_node_struct node,
bintree_node_struct **  left_child
 

Definition at line 409 of file bintree.c.

References get_bintree_left_child_ptr().

Referenced by output_bintree_node(), recursive_delete_bintree(), recursive_efficiency_count(), recursive_find_closest_point(), recursive_find_closest_vertex(), and recursive_intersect_ray().

public BOOLEAN get_bintree_left_child_ptr bintree_node_struct node,
bintree_node_struct ***  ptr_to_left_child
 

Definition at line 380 of file bintree.c.

References bintree_node_is_leaf(), bintree_node_struct::data, LEFT_CHILD_EXISTS, and bintree_node_struct::node_info.

Referenced by get_bintree_left_child(), and subdivide_bintree().

public void get_bintree_limits bintree_struct_ptr  bintree,
range_struct limits
 

Definition at line 155 of file bintree.c.

References bintree_struct::range.

Referenced by subdivide_bintree().

public BOOLEAN get_bintree_right_child bintree_node_struct node,
bintree_node_struct **  right_child
 

Definition at line 475 of file bintree.c.

References get_bintree_right_child_ptr().

Referenced by output_bintree_node(), recursive_delete_bintree(), recursive_efficiency_count(), recursive_find_closest_point(), recursive_find_closest_vertex(), and recursive_intersect_ray().

public BOOLEAN get_bintree_right_child_ptr bintree_node_struct node,
bintree_node_struct ***  ptr_to_right_child
 

Definition at line 438 of file bintree.c.

References bintree_node_is_leaf(), bintree_node_struct::data, LEFT_CHILD_EXISTS, bintree_node_struct::node_info, and RIGHT_CHILD_EXISTS.

Referenced by get_bintree_right_child(), and subdivide_bintree().

public int get_node_split_axis bintree_node_struct node  ) 
 

Definition at line 504 of file bintree.c.

References bintree_node_struct::node_info, and SUBDIVISION_AXIS_BITS.

Referenced by recursive_efficiency_count(), recursive_find_closest_point(), recursive_find_closest_vertex(), and recursive_intersect_ray().

public Real get_node_split_position bintree_node_struct node  ) 
 

Definition at line 523 of file bintree.c.

References bintree_node_struct::split_position.

Referenced by recursive_efficiency_count(), recursive_find_closest_point(), recursive_find_closest_vertex(), recursive_intersect_ray(), and split_node().

public void initialize_bintree Real  x_min,
Real  x_max,
Real  y_min,
Real  y_max,
Real  z_min,
Real  z_max,
bintree_struct_ptr  bintree
 

Definition at line 57 of file bintree.c.

References bintree_struct_ptr, range_struct::limits, bintree_struct::n_nodes, bintree_struct::range, and bintree_struct::root.

Referenced by PRIORITY_QUEUE_STRUCT().

private Status input_bintree_node FILE *  file,
File_formats  format,
bintree_node_struct **  node
 

Definition at line 779 of file bintree.c.

References create_bintree_internal_node(), create_bintree_leaf(), LEAF_SIGNAL, NODE_INFO_OBJECTS_SHIFT, node_info_type, and SUBDIVISION_AXIS_BITS.

Referenced by io_bintree().

public Status io_bintree FILE *  file,
IO_types  direction,
File_formats  format,
bintree_struct_ptr  bintree
 

Definition at line 622 of file bintree.c.

References input_bintree_node(), io_range(), output_bintree_node(), bintree_struct::range, and bintree_struct::root.

private Status io_range FILE *  file,
IO_types  direction,
File_formats  format,
range_struct range
 

Definition at line 656 of file bintree.c.

References range_struct::limits.

Referenced by io_bintree().

private Status output_bintree_node FILE *  file,
File_formats  format,
bintree_node_struct node
 

Definition at line 733 of file bintree.c.

References bintree_node_is_leaf(), get_bintree_left_child(), get_bintree_right_child(), bintree_node_struct::node_info, output_leaf_node(), and bintree_node_struct::split_position.

Referenced by io_bintree().

private Status output_leaf_node FILE *  file,
File_formats  format,
bintree_node_struct node
 

Definition at line 697 of file bintree.c.

References get_bintree_leaf_objects(), and MAX_NODE_INFO_OBJECTS.

Referenced by output_bintree_node().

public BOOLEAN point_within_range Point *  point,
range_struct range
 

Definition at line 543 of file bintree.c.

References range_struct::limits.

public Real range_surface_area range_struct range  ) 
 

Definition at line 593 of file bintree.c.

References range_struct::limits.

Referenced by node_visit_estimation().

public Real range_volume range_struct range  ) 
 

Definition at line 572 of file bintree.c.

References range_struct::limits.

Referenced by node_visit_estimation().

private void recursive_delete_bintree bintree_node_struct node  ) 
 

Definition at line 109 of file bintree.c.

References delete_bintree_node(), get_bintree_left_child(), and get_bintree_right_child().

Referenced by delete_bintree().

private void set_bintree_child bintree_node_struct node,
int  which,
bintree_node_struct child
 

Definition at line 177 of file bintree.c.

References bintree_node_struct::data, LEFT_CHILD, LEFT_CHILD_EXISTS, and bintree_node_struct::node_info.

Referenced by create_bintree_internal_node().


Generated on Wed Jul 28 09:10:59 2004 for BICPL by doxygen 1.3.7