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

marching_no_holes.c File Reference

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

Include dependency graph for marching_no_holes.c:

Include dependency graph

Go to the source code of this file.

Data Structures

struct  polygons_list
struct  face_struct
struct  case_struct
struct  edges_struct

Defines

#define MAX_POLYGONS_PER_VOXEL   4
#define MAX_INDICES_PER_VOXEL   12

Enumerations

enum  Case_types { PLUS_FLAG, MINUS_FLAG, MAX_CASES }

Functions

private void create_marching_cubes_lookup (void)
private void create_case (Case_types case_flags[2][2][2], case_struct *case_info)
private void get_face_axes (int c, int face, int *a1, int *a2)
private void create_face_indices (int c, int face, face_struct *face_indices)
private void get_face_flags (Case_types case_flags[2][2][2], int c, int face, Case_types face_flags[4])
private BOOLEAN ambiguous_face_case (Case_types face_flags[4])
private BOOLEAN face_is_ambiguous (Case_types case_flags[2][2][2], int c, int face)
private BOOLEAN surface_edge (Case_types face_flags[4], int edge)
private void get_edge_point (voxel_point_type *edge_point, int c, int face, int edge)
private void find_neighbour_face (int c, int face, int edge, int *new_c, int *new_face, int *new_edge)
private void delete_case (case_struct *case_info)
private void create_case_polygons (Case_types case_flags[2][2][2], BOOLEAN face_ambiguity_flags[3][2], polygons_list *polygons)
private void check_initialized (void)
private void follow_edge (polygons_list *polygons, int *ind, edges_struct edges[3][2], int c, int face, int edge_index)
private void find_voxel_edge_index (int c, int face, int edge, edges_struct edges[3][2], int *edge_index)
private void create_edges (Case_types case_flags[2][2][2], BOOLEAN face_ambiguity_flags[3][2], edges_struct edges[3][2])
private void create_edge_for_face (Case_types face_flags[4], BOOLEAN face_ambiguity_flag, edges_struct *edges)
public int get_holeless_isosurface_polygons (Real corners[2][2][2], Real isovalue, int *sizes[], voxel_point_type *points[])
public void delete_marching_cubes_table (void)

Variables

private case_struct cases [2][2][2][2][2][2][2][2]
private BOOLEAN initialized = FALSE


Define Documentation

#define MAX_INDICES_PER_VOXEL   12
 

Definition at line 6 of file marching_no_holes.c.

Referenced by create_case(), and create_case_polygons().

#define MAX_POLYGONS_PER_VOXEL   4
 

Definition at line 5 of file marching_no_holes.c.

Referenced by create_case(), and create_case_polygons().


Enumeration Type Documentation

enum Case_types
 

Enumeration values:
PLUS_FLAG 
MINUS_FLAG 
MAX_CASES 

Definition at line 28 of file marching_no_holes.c.

Referenced by create_case(), create_edges(), create_marching_cubes_lookup(), delete_marching_cubes_table(), delete_tetra_marching_cubes_table(), face_is_ambiguous(), get_tetra_case(), get_tetra_isosurface_polygons(), and surface_edge().


Function Documentation

private BOOLEAN ambiguous_face_case Case_types  face_flags[4]  ) 
 

Definition at line 322 of file marching_no_holes.c.

References MINUS_FLAG, and PLUS_FLAG.

Referenced by create_edge_for_face(), and face_is_ambiguous().

private void check_initialized void   ) 
 

Definition at line 81 of file marching_no_holes.c.

References create_marching_cubes_lookup(), initialized, and TRUE.

Referenced by convert_mm_to_talairach(), convert_talairach_to_mm(), convert_talairach_to_voxel(), convert_voxel_to_talairach(), get_holeless_isosurface_polygons(), get_random(), and get_tetra_isosurface_polygons().

private void create_case Case_types  case_flags[2][2][2],
case_struct case_info
 

Definition at line 188 of file marching_no_holes.c.

References case_struct::ambiguity_faces, create_case_polygons(), create_face_indices(), face_is_ambiguous(), FALSE, case_struct::n_ambiguities, case_struct::polygons, and TRUE.

private void create_case_polygons Case_types  case_flags[2][2][2],
BOOLEAN  face_ambiguity_flags[3][2],
polygons_list polygons
 

Definition at line 383 of file marching_no_holes.c.

References create_edges(), edges_struct::edge_used, follow_edge(), MAX_INDICES_PER_VOXEL, MAX_POLYGONS_PER_VOXEL, polygons_list::n_polygons, and polygons_list::sizes.

Referenced by create_case().

private void create_edge_for_face Case_types  face_flags[4],
BOOLEAN  face_ambiguity_flag,
edges_struct edges
 

Definition at line 451 of file marching_no_holes.c.

References ambiguous_face_case(), edges_struct::edge_points, edges_struct::edge_used, FALSE, edges_struct::n_edges, PLUS_FLAG, and surface_edge().

Referenced by create_edges().

private void create_edges Case_types  case_flags[2][2][2],
BOOLEAN  face_ambiguity_flags[3][2],
edges_struct  edges[3][2]
 

Definition at line 431 of file marching_no_holes.c.

References Case_types, create_edge_for_face(), and get_face_flags().

Referenced by create_case_polygons().

private void create_face_indices int  c,
int  face,
face_struct face_indices
 

Definition at line 277 of file marching_no_holes.c.

References get_face_axes(), and face_struct::offsets.

Referenced by create_case(), find_neighbour_face(), get_edge_point(), and get_face_flags().

private void create_marching_cubes_lookup void   ) 
 

Definition at line 126 of file marching_no_holes.c.

References Case_types, cases, create_case(), and MAX_CASES.

Referenced by check_initialized().

private void delete_case case_struct case_info  ) 
 

Definition at line 829 of file marching_no_holes.c.

References case_struct::ambiguity_faces, case_struct::n_ambiguities, and case_struct::polygons.

public void delete_marching_cubes_table void   ) 
 

Definition at line 802 of file marching_no_holes.c.

References Case_types, cases, delete_case(), initialized, and MAX_CASES.

private BOOLEAN face_is_ambiguous Case_types  case_flags[2][2][2],
int  c,
int  face
 

Definition at line 335 of file marching_no_holes.c.

References ambiguous_face_case(), Case_types, and get_face_flags().

Referenced by create_case().

private void find_neighbour_face int  c,
int  face,
int  edge,
int *  new_c,
int *  new_face,
int *  new_edge
 

Definition at line 613 of file marching_no_holes.c.

References create_face_indices(), FALSE, initialized, face_struct::offsets, and TRUE.

Referenced by follow_edge().

private void find_voxel_edge_index int  c,
int  face,
int  edge,
edges_struct  edges[3][2],
int *  edge_index
 

Definition at line 687 of file marching_no_holes.c.

References edges_struct::edge_points, FALSE, and TRUE.

Referenced by follow_edge().

private void follow_edge polygons_list polygons,
int *  ind,
edges_struct  edges[3][2],
int  c,
int  face,
int  edge_index
 

Definition at line 548 of file marching_no_holes.c.

References edges_struct::edge_points, edges_struct::edge_used, find_neighbour_face(), find_voxel_edge_index(), get_edge_point(), polygons_list::indices, and TRUE.

Referenced by create_case_polygons().

private void get_edge_point voxel_point_type edge_point,
int  c,
int  face,
int  edge
 

Definition at line 574 of file marching_no_holes.c.

References voxel_point_type::coord, create_face_indices(), voxel_point_type::edge_intersected, and get_face_axes().

Referenced by follow_edge().

private void get_face_axes int  c,
int  face,
int *  a1,
int *  a2
 

Definition at line 259 of file marching_no_holes.c.

Referenced by create_face_indices(), and get_edge_point().

private void get_face_flags Case_types  case_flags[2][2][2],
int  c,
int  face,
Case_types  face_flags[4]
 

Definition at line 303 of file marching_no_holes.c.

References create_face_indices(), and face_struct::offsets.

Referenced by create_edges(), and face_is_ambiguous().

public int get_holeless_isosurface_polygons Real  corners[2][2][2],
Real  isovalue,
int *  sizes[],
voxel_point_type points[]
 

Definition at line 713 of file marching_no_holes.c.

References case_struct::ambiguity_faces, cases, check_initialized(), polygons_list::indices, case_struct::n_ambiguities, polygons_list::n_polygons, face_struct::offsets, case_struct::polygons, and polygons_list::sizes.

Referenced by get_polygons().

private BOOLEAN surface_edge Case_types  face_flags[4],
int  edge
 

Definition at line 535 of file marching_no_holes.c.

References Case_types, MINUS_FLAG, and PLUS_FLAG.

Referenced by create_edge_for_face().


Variable Documentation

private case_struct cases[2][2][2][2][2][2][2][2]
 

Definition at line 31 of file marching_no_holes.c.

Referenced by create_marching_cubes_lookup(), delete_marching_cubes_table(), delete_tetra_marching_cubes_table(), get_holeless_isosurface_polygons(), and get_tetra_isosurface_polygons().

private BOOLEAN initialized = FALSE
 

Definition at line 33 of file marching_no_holes.c.

Referenced by check_initialized(), delete_marching_cubes_table(), delete_tetra_marching_cubes_table(), find_neighbour_face(), get_8bit_rgb_pixel_lookup(), get_polygon_vertex_curvatures(), and set_random_seed().


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