00001
#ifndef DEF_ds_prototypes
00002
#define DEF_ds_prototypes
00003
00004
public void initialize_bintree(
00005 Real x_min,
00006 Real x_max,
00007 Real y_min,
00008 Real y_max,
00009 Real z_min,
00010 Real z_max,
00011
bintree_struct_ptr bintree );
00012
00013
public void delete_bintree_node(
00014
bintree_node_struct *node );
00015
00016
public void delete_bintree(
00017
bintree_struct_ptr bintree );
00018
00019
public void get_bintree_limits(
00020
bintree_struct_ptr bintree,
00021
range_struct *limits );
00022
00023
public bintree_node_struct *
create_bintree_internal_node(
00024
int split_coord,
00025 Real split_position,
00026
bintree_node_struct *left,
00027
bintree_node_struct *right );
00028
00029
public bintree_node_struct *
create_bintree_leaf(
00030 Real split_position,
00031
int n_objects,
00032
int object_list[] );
00033
00034
public BOOLEAN
bintree_node_is_leaf(
00035
bintree_node_struct *node );
00036
00037
public int get_bintree_leaf_objects(
00038
bintree_node_struct *node,
00039
int *object_list[] );
00040
00041
public BOOLEAN
get_bintree_left_child_ptr(
00042
bintree_node_struct *node,
00043
bintree_node_struct ***ptr_to_left_child );
00044
00045
public BOOLEAN
get_bintree_left_child(
00046
bintree_node_struct *node,
00047
bintree_node_struct **left_child );
00048
00049
public BOOLEAN
get_bintree_right_child_ptr(
00050
bintree_node_struct *node,
00051
bintree_node_struct ***ptr_to_right_child );
00052
00053
public BOOLEAN
get_bintree_right_child(
00054
bintree_node_struct *node,
00055
bintree_node_struct **right_child );
00056
00057
public int get_node_split_axis(
00058
bintree_node_struct *node );
00059
00060
public Real
get_node_split_position(
00061
bintree_node_struct *node );
00062
00063
public BOOLEAN
point_within_range(
00064 Point *point,
00065
range_struct *range );
00066
00067
public Real
range_volume(
00068
range_struct *range );
00069
00070
public Real
range_surface_area(
00071
range_struct *range );
00072
00073
public Status
io_bintree(
00074 FILE *file,
00075 IO_types direction,
00076 File_formats format,
00077
bintree_struct_ptr bintree );
00078
00079
public void create_bitlist(
00080
int n_bits,
00081
bitlist_struct *bitlist );
00082
00083
public void zero_bitlist(
00084
bitlist_struct *bitlist );
00085
00086
public void fill_bitlist(
00087
bitlist_struct *bitlist );
00088
00089
public void set_bitlist_bit(
00090
bitlist_struct *bitlist,
00091
int bit_index,
00092 BOOLEAN value );
00093
00094
public BOOLEAN
get_bitlist_bit(
00095
bitlist_struct *bitlist,
00096
int bit_index );
00097
00098
public void delete_bitlist(
00099
bitlist_struct *bitlist );
00100
00101
public void create_bitlist_3d(
00102
int nx,
00103
int ny,
00104
int nz,
00105
bitlist_3d_struct *bitlist );
00106
00107
public void zero_bitlist_3d(
00108
bitlist_3d_struct *bitlist );
00109
00110
public void get_bitlist_3d_sizes(
00111
bitlist_3d_struct *bitlist,
00112
int *nx,
00113
int *ny,
00114
int *nz );
00115
00116
public void fill_bitlist_3d(
00117
bitlist_3d_struct *bitlist );
00118
00119
public void set_bitlist_bit_3d(
00120
bitlist_3d_struct *bitlist,
00121
int x,
00122
int y,
00123
int z,
00124 BOOLEAN value );
00125
00126
public BOOLEAN
get_bitlist_bit_3d(
00127
bitlist_3d_struct *bitlist,
00128
int x,
00129
int y,
00130
int z );
00131
00132
public void delete_bitlist_3d(
00133
bitlist_3d_struct *bitlist );
00134
00135
public Status
io_bitlist_3d(
00136 FILE *file,
00137 IO_types io_type,
00138
bitlist_3d_struct *bitlist );
00139
00140
public void create_object_bintree(
00141
int n_objects,
00142
range_struct bound_vols[],
00143
bintree_struct_ptr bintree,
00144
int max_nodes );
00145
00146
public void evaluate_bintree_efficiency(
00147
bintree_struct_ptr bintree,
00148 Real *avg_nodes_visited,
00149 Real *avg_objects_visited );
00150
00151
public void initialize_hash_table(
00152
hash_table_struct *hash_table,
00153
int size,
00154
int data_size,
00155 Real enlarge_threshold,
00156 Real new_density );
00157
00158
public void delete_hash_table(
00159
hash_table_struct *hash_table );
00160
00161
public void insert_in_hash_table(
00162
hash_table_struct *hash_table,
00163
int key,
00164
void *data_ptr );
00165
00166
public BOOLEAN
lookup_in_hash_table(
00167
hash_table_struct *hash_table,
00168
int key,
00169
void *data_ptr );
00170
00171
public BOOLEAN
remove_from_hash_table(
00172
hash_table_struct *hash_table,
00173
int key,
00174
void *data_ptr );
00175
00176
public void increase_hash_table_size(
00177
hash_table_struct *hash_table,
00178
int new_size );
00179
00180
public void initialize_hash_pointer(
00181
hash_table_pointer *ptr );
00182
00183
public BOOLEAN
get_next_hash_entry(
00184
hash_table_struct *hash_table,
00185
hash_table_pointer *ptr,
00186
void *data_ptr );
00187
00188
public void initialize_hash2_table(
00189
hash2_table_struct *hash_table,
00190
int size,
00191
int data_size,
00192 Real enlarge_threshold,
00193 Real new_density );
00194
00195
public void delete_hash2_table(
00196
hash2_table_struct *hash_table );
00197
00198
public void insert_in_hash2_table(
00199
hash2_table_struct *hash_table,
00200
int key1,
00201
int key2,
00202
void *data_ptr );
00203
00204
public BOOLEAN
lookup_in_hash2_table(
00205
hash2_table_struct *hash_table,
00206
int key1,
00207
int key2,
00208
void *data_ptr );
00209
00210
public BOOLEAN
remove_from_hash2_table(
00211
hash2_table_struct *hash_table,
00212
int key1,
00213
int key2,
00214
void *data_ptr );
00215
00216
public void increase_hash2_table_size(
00217
hash2_table_struct *hash_table,
00218
int new_size );
00219
00220
public void initialize_hash2_pointer(
00221
hash2_table_pointer *ptr );
00222
00223
public BOOLEAN
get_next_hash2_entry(
00224
hash2_table_struct *hash_table,
00225
hash2_table_pointer *ptr,
00226
void *data_ptr );
00227
00228
public void delete_the_bintree(
00229
bintree_struct_ptr *bintree );
00230
00231
public void *
allocate_bintree(
void );
00232
00233
public void create_lines_bintree(
00234
lines_struct *lines,
00235
int max_nodes );
00236
00237
public void create_polygons_bintree(
00238
polygons_struct *polygons,
00239
int max_nodes );
00240
00241
public void create_quadmesh_bintree(
00242
quadmesh_struct *quadmesh,
00243
int max_nodes );
00244
00245
public Real
find_closest_point_in_bintree(
00246 Point *point,
00247
bintree_struct_ptr bintree,
00248
object_struct *object,
00249
int *obj_index,
00250 Point *point_on_object );
00251
00252
public Real
find_closest_vertex_in_bintree(
00253 Point *point,
00254
bintree_struct_ptr bintree,
00255
object_struct *object,
00256
int *vertex_on_object );
00257
00258
public void print_bintree_stats(
00259
int n_objects );
00260
00261
public int intersect_ray_with_bintree(
00262 Point *origin,
00263 Vector *direction,
00264
bintree_struct_ptr bintree,
00265
object_struct *object,
00266
int *obj_index,
00267 Real *dist,
00268 Real *distances[] );
00269
00270
public BOOLEAN
ray_intersects_range(
00271
range_struct *range,
00272 Point *origin,
00273 Vector *direction,
00274 Real *t_min,
00275 Real *t_max );
00276
00277
public void initialize_skiplist(
00278
skiplist_struct *skiplist );
00279
00280
public void delete_skiplist(
00281
skiplist_struct *skiplist );
00282
00283
public BOOLEAN
search_skiplist(
00284
skiplist_struct *skiplist,
00285
float key,
00286
void **data_ptr );
00287
00288
public BOOLEAN
search_skiplist_and_return_pointer(
00289
skiplist_struct *skiplist,
00290
float key,
00291
skip_struct **entry_ptr,
00292
void **data_ptr );
00293
00294
public BOOLEAN
insert_in_skiplist(
00295
skiplist_struct *skiplist,
00296
float key,
00297
void *data_ptr );
00298
00299
public BOOLEAN
delete_from_skiplist(
00300
skiplist_struct *skiplist,
00301
float key,
00302
void **data_ptr );
00303
00304
public BOOLEAN
get_first_skiplist_entry(
00305
skiplist_struct *skiplist,
00306
skip_struct **entry_ptr,
00307
float *key,
00308
void **data_ptr );
00309
00310
public BOOLEAN
get_next_skiplist_entry(
00311
skip_struct **entry_ptr,
00312
float *key,
00313
void **data_ptr );
00314
#endif