BRL-CAD
chull3d.cpp File Reference
#include "common.h"
#include <map>
#include <float.h>
#include <locale.h>
#include <math.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
#include "bu/log.h"
#include "bu/ptbl.h"
#include "bu/malloc.h"
#include "bn/chull.h"
#include "bn/randmt.h"
Include dependency graph for chull3d.cpp:

Go to the source code of this file.

Data Structures

struct  basis_s
 
struct  neighbor
 
struct  simplex
 
struct  tree_node
 
struct  fg_node
 
struct  chull3d_data
 

Macros

#define BLOCKSIZE   100000
 
#define MAXDIM   3
 
#define CHULL3D_COUNT_THRESHOLD   1000
 
#define CHULL3D_DELTA_THRESHOLD   200
 
#define CHULL3D_SUBSET_SIZE   275
 
#define CHULL3D_VA(x)   ((x)->vecs+cdata->rdim)
 
#define CHULL3D_VB(x)   ((x)->vecs)
 
#define CHULL3D_trans(z, p, q)   {int ti; for (ti=0;ti<cdata->pdim;ti++) z[ti+cdata->rdim] = z[ti] = p[ti] - q[ti];}
 
#define CHULL3D_DELIFT   0
 
#define CHULL3D_push(x)   *(cdata->st+tms++) = x;
 
#define CHULL3D_pop(x)   x = *(cdata->st + --tms);
 
#define CHULL3D_NEWL(cdata, list, X, p)
 
#define CHULL3D_NEWLRC(cdata, list, X, p)
 
#define CHULL3D_NULLIFY(cdata, X, v)
 
#define CHULL3D_copy_simp(cdata, cnew, s)
 

Typedefs

typedef double Coord
 
typedef Coordpoint
 
typedef point site
 
typedef Coordnormalp
 
typedef Coord site_struct
 
typedef struct basis_s basis_s
 
typedef struct neighbor neighbor
 
typedef struct simplex simplex
 
typedef struct fg_node fg
 
typedef struct tree_node Tree
 
typedef struct fg_node fg_node
 
typedef site gsitef(void *)
 
typedef long site_n(void *, site)
 
typedef int chull3d_test_func(struct chull3d_data *, simplex *, int, void *)
 
typedef void * chull3d_visit_func(struct chull3d_data *, simplex *, void *)
 

Functions

HIDDEN simplexchull3d_new_block_simplex (struct chull3d_data *cdata, int make_blocks)
 
HIDDEN void chull3d_free_simplex_storage (struct chull3d_data *cdata)
 
HIDDEN basis_schull3d_new_block_basis_s (struct chull3d_data *cdata, int make_blocks)
 
HIDDEN void chull3d_free_basis_s_storage (struct chull3d_data *cdata)
 
HIDDEN Treechull3d_new_block_Tree (struct chull3d_data *cdata, int make_blocks)
 
HIDDEN void chull3d_free_Tree_storage (struct chull3d_data *cdata)
 
HIDDEN Coord chull3d_Vec_dot (struct chull3d_data *cdata, point x, point y)
 
HIDDEN Coord chull3d_Vec_dot_pdim (struct chull3d_data *cdata, point x, point y)
 
HIDDEN Coord chull3d_Norm2 (struct chull3d_data *cdata, point x)
 
HIDDEN void chull3d_Ax_plus_y (struct chull3d_data *cdata, Coord a, point x, point y)
 
HIDDEN void chull3d_Vec_scale (struct chull3d_data *cdata, int n, Coord a, Coord *x)
 
HIDDEN double chull3d_sc (struct chull3d_data *cdata, basis_s *v, simplex *s, int k, int j)
 
HIDDEN int chull3d_reduce_inner (struct chull3d_data *cdata, basis_s *v, simplex *s, int k)
 
HIDDEN int chull3d_reduce (struct chull3d_data *cdata, basis_s **v, point p, simplex *s, int k)
 
HIDDEN void chull3d_get_basis_sede (struct chull3d_data *cdata, simplex *s)
 
HIDDEN int chull3d_out_of_flat (struct chull3d_data *cdata, simplex *root, point p)
 
HIDDEN int chull3d_sees (struct chull3d_data *, site, simplex *)
 
HIDDEN void chull3d_get_normal_sede (struct chull3d_data *cdata, simplex *s)
 
HIDDEN void chull3d_get_normal (struct chull3d_data *cdata, simplex *s)
 
HIDDEN void chull3d_free_hull_storage (struct chull3d_data *cdata)
 
HIDDEN void chull3d_visit_fg_i (struct chull3d_data *cdata, void(*v_fg)(struct chull3d_data *, Tree *, int, int), Tree *t, int depth, int vn, int boundary)
 
HIDDEN void chull3d_visit_fg (struct chull3d_data *cdata, fg *faces_gr, void(*v_fg)(struct chull3d_data *, Tree *, int, int))
 
HIDDEN int chull3d_visit_fg_i_far (struct chull3d_data *cdata, void(*v_fg)(struct chull3d_data *, Tree *, int), Tree *t, int depth, int vn)
 
HIDDEN void chull3d_visit_fg_far (struct chull3d_data *cdata, fg *faces_gr, void(*v_fg)(struct chull3d_data *, Tree *, int))
 
HIDDEN void * chull3d_visit_triang_gen (struct chull3d_data *cdata, simplex *s, chull3d_visit_func *visit, chull3d_test_func *test)
 
HIDDEN int chull3d_truet (struct chull3d_data *cdata, simplex *s, int i, void *dum)
 
HIDDEN void * chull3d_visit_triang (struct chull3d_data *cdata, simplex *root, chull3d_visit_func *visit)
 
HIDDEN int chull3d_hullt (struct chull3d_data *cdata, simplex *s, int i, void *dummy)
 
HIDDEN void * chull3d_facet_test (struct chull3d_data *cdata, simplex *s, void *dummy)
 
HIDDEN void * chull3d_visit_hull (struct chull3d_data *cdata, simplex *root, chull3d_visit_func *visit)
 
HIDDEN void * chull3d_check_simplex (struct chull3d_data *cdata, simplex *s, void *dum)
 
HIDDEN void * chull3d_collect_hull_pnts (struct chull3d_data *cdata, simplex *s, void *p)
 
HIDDEN void * chull3d_collect_faces (struct chull3d_data *cdata, simplex *s, void *p)
 
double logb (double x)
 
HIDDEN Coord chull3d_maxdist (int dim, point p1, point p2)
 
HIDDEN neighborchull3d_op_simp (struct chull3d_data *cdata, simplex *a, simplex *b)
 
HIDDEN neighborchull3d_op_vert (struct chull3d_data *cdata, simplex *a, site b)
 
HIDDEN void chull3d_connect (struct chull3d_data *cdata, simplex *s)
 
HIDDEN simplexchull3d_make_facets (struct chull3d_data *cdata, simplex *seen)
 
HIDDEN simplexchull3d_extend_simplices (struct chull3d_data *cdata, simplex *s)
 
HIDDEN simplexchull3d_search (struct chull3d_data *cdata, simplex *root)
 
HIDDEN point chull3d_get_another_site (struct chull3d_data *cdata)
 
HIDDEN void chull3d_buildhull (struct chull3d_data *cdata, simplex *root)
 
HIDDEN simplexchull3d_build_convex_hull (struct chull3d_data *cdata, gsitef *get_s, site_n *site_numm, short dim)
 
HIDDEN long chull3d_site_numm (void *data, site p)
 
HIDDEN site chull3d_new_site (struct chull3d_data *cdata, site p, long j)
 
HIDDEN site chull3d_read_next_site (struct chull3d_data *cdata, long j)
 
HIDDEN void chull3d_make_shuffle (struct chull3d_data *cdata)
 
HIDDEN site chull3d_get_next_site (void *data)
 
HIDDEN void chull3d_data_init (struct chull3d_data *data, int vert_cnt)
 
HIDDEN void chull3d_data_free (struct chull3d_data *data)
 
HIDDEN int chull3d_intermediate_set (point_t **vertices, int *num_vertices, const point_t *input_points_3d, int num_input_pnts)
 
int bn_3d_chull (int **faces, int *num_faces, point_t **vertices, int *num_vertices, const point_t *input_points_3d, int num_input_pnts)
 Find 3D point convex hull for unordered point sets. More...
 

Macro Definition Documentation

#define BLOCKSIZE   100000

Definition at line 35 of file chull3d.cpp.

Referenced by chull3d_new_site(), and chull3d_site_numm().

#define CHULL3D_COUNT_THRESHOLD   1000

Definition at line 47 of file chull3d.cpp.

Referenced by bn_3d_chull().

#define CHULL3D_DELTA_THRESHOLD   200

Definition at line 48 of file chull3d.cpp.

Referenced by bn_3d_chull().

#define CHULL3D_SUBSET_SIZE   275

Definition at line 49 of file chull3d.cpp.

Referenced by chull3d_intermediate_set().

#define CHULL3D_VA (   x)    ((x)->vecs+cdata->rdim)

Definition at line 177 of file chull3d.cpp.

Referenced by chull3d_reduce_inner().

#define CHULL3D_VB (   x)    ((x)->vecs)
#define CHULL3D_trans (   z,
  p,
 
)    {int ti; for (ti=0;ti<cdata->pdim;ti++) z[ti+cdata->rdim] = z[ti] = p[ti] - q[ti];}

Definition at line 179 of file chull3d.cpp.

Referenced by chull3d_reduce(), and chull3d_sees().

#define CHULL3D_DELIFT   0

Definition at line 180 of file chull3d.cpp.

Referenced by chull3d_sc().

#define CHULL3D_push (   x)    *(cdata->st+tms++) = x;

Definition at line 182 of file chull3d.cpp.

Referenced by chull3d_search(), and chull3d_visit_triang_gen().

#define CHULL3D_pop (   x)    x = *(cdata->st + --tms);

Definition at line 183 of file chull3d.cpp.

Referenced by chull3d_search(), and chull3d_visit_triang_gen().

#define CHULL3D_NEWL (   cdata,
  list,
  X,
 
)
Value:
{ \
p = list ? list : chull3d_new_block_##X(cdata, 1); \
/*assert(p);*/ \
list = p->next; \
}
Definition: color.c:49

Definition at line 185 of file chull3d.cpp.

Referenced by chull3d_build_convex_hull().

#define CHULL3D_NEWLRC (   cdata,
  list,
  X,
 
)
Value:
{ \
p = list ? list : chull3d_new_block_##X(cdata, 1); \
/*assert(p);*/ \
list = p->next; \
p->ref_count = 1; \
}
Definition: color.c:49

Definition at line 192 of file chull3d.cpp.

Referenced by chull3d_get_normal_sede(), and chull3d_reduce().

#define CHULL3D_NULLIFY (   cdata,
  X,
 
)
Value:
{ \
if ((v) && --(v)->ref_count == 0) { \
memset((v),0,cdata->X##_size); \
(v)->next = cdata->X##_list; \
cdata->X##_list = v; \
} \
v = NULL;\
}
if(share_geom)
Definition: nmg_mod.c:3829
void * memset(void *s, int c, size_t n)

Definition at line 200 of file chull3d.cpp.

Referenced by chull3d_extend_simplices(), chull3d_get_basis_sede(), chull3d_make_facets(), chull3d_out_of_flat(), and chull3d_sees().

#define CHULL3D_copy_simp (   cdata,
  cnew,
  s 
)
Value:
{ \
int mi; \
neighbor *mrsn; \
CHULL3D_NEWL(cdata, cdata->simplex_list, simplex, cnew); \
memcpy(cnew,s,cdata->simplex_size); \
for (mi=-1,mrsn=s->neigh-1;mi<(cdata->cdim);mi++,mrsn++) \
if (mrsn->basis) mrsn->basis->ref_count++; \
}
if lu s
Definition: nmg_mod.c:3860
if(share_geom)
Definition: nmg_mod.c:3829
#define CHULL3D_NEWL(cdata, list, X, p)
Definition: chull3d.cpp:185
struct neighbor neighbor

Definition at line 209 of file chull3d.cpp.

Referenced by chull3d_build_convex_hull(), chull3d_extend_simplices(), and chull3d_make_facets().

Typedef Documentation

typedef double Coord

Definition at line 51 of file chull3d.cpp.

typedef Coord* point

Definition at line 52 of file chull3d.cpp.

typedef point site

Definition at line 53 of file chull3d.cpp.

typedef Coord* normalp

Definition at line 54 of file chull3d.cpp.

typedef Coord site_struct

Definition at line 55 of file chull3d.cpp.

typedef struct basis_s basis_s
typedef struct neighbor neighbor
typedef struct simplex simplex
typedef struct fg_node fg

Definition at line 80 of file chull3d.cpp.

typedef struct tree_node Tree

Definition at line 81 of file chull3d.cpp.

typedef struct fg_node fg_node
typedef site gsitef(void *)

Definition at line 99 of file chull3d.cpp.

typedef long site_n(void *, site)

Definition at line 100 of file chull3d.cpp.

typedef int chull3d_test_func(struct chull3d_data *, simplex *, int, void *)

Definition at line 618 of file chull3d.cpp.

typedef void* chull3d_visit_func(struct chull3d_data *, simplex *, void *)

Definition at line 619 of file chull3d.cpp.

Function Documentation

HIDDEN simplex* chull3d_new_block_simplex ( struct chull3d_data cdata,
int  make_blocks 
)

Definition at line 220 of file chull3d.cpp.

References chull3d_data::input_vert_cnt, memset(), simplex::next, chull3d_data::num_simplex_blocks, chull3d_data::simplex_block_table, chull3d_data::simplex_list, and chull3d_data::simplex_size.

Referenced by chull3d_free_simplex_storage().

Here is the call graph for this function:

HIDDEN void chull3d_free_simplex_storage ( struct chull3d_data cdata)

Definition at line 242 of file chull3d.cpp.

References chull3d_new_block_simplex().

Referenced by chull3d_free_hull_storage().

Here is the call graph for this function:

HIDDEN basis_s* chull3d_new_block_basis_s ( struct chull3d_data cdata,
int  make_blocks 
)

Definition at line 248 of file chull3d.cpp.

References chull3d_data::basis_s_block_table, chull3d_data::basis_s_list, chull3d_data::basis_s_size, chull3d_data::input_vert_cnt, memset(), basis_s::next, and chull3d_data::num_basis_s_blocks.

Referenced by chull3d_free_basis_s_storage().

Here is the call graph for this function:

HIDDEN void chull3d_free_basis_s_storage ( struct chull3d_data cdata)

Definition at line 270 of file chull3d.cpp.

References chull3d_new_block_basis_s().

Referenced by chull3d_free_hull_storage().

Here is the call graph for this function:

HIDDEN Tree* chull3d_new_block_Tree ( struct chull3d_data cdata,
int  make_blocks 
)

Definition at line 277 of file chull3d.cpp.

References chull3d_data::input_vert_cnt, memset(), tree_node::next, chull3d_data::num_Tree_blocks, chull3d_data::Tree_block_table, chull3d_data::Tree_list, and chull3d_data::Tree_size.

Referenced by chull3d_free_Tree_storage().

Here is the call graph for this function:

HIDDEN void chull3d_free_Tree_storage ( struct chull3d_data cdata)

Definition at line 298 of file chull3d.cpp.

References chull3d_new_block_Tree().

Referenced by chull3d_free_hull_storage().

Here is the call graph for this function:

HIDDEN Coord chull3d_Vec_dot ( struct chull3d_data cdata,
point  x,
point  y 
)

Definition at line 306 of file chull3d.cpp.

References chull3d_data::rdim.

Referenced by chull3d_reduce_inner(), and chull3d_sees().

HIDDEN Coord chull3d_Vec_dot_pdim ( struct chull3d_data cdata,
point  x,
point  y 
)

Definition at line 315 of file chull3d.cpp.

References chull3d_data::pdim.

HIDDEN Coord chull3d_Norm2 ( struct chull3d_data cdata,
point  x 
)

Definition at line 324 of file chull3d.cpp.

References chull3d_data::rdim.

Referenced by chull3d_get_normal_sede(), chull3d_reduce_inner(), and chull3d_sees().

HIDDEN void chull3d_Ax_plus_y ( struct chull3d_data cdata,
Coord  a,
point  x,
point  y 
)

Definition at line 333 of file chull3d.cpp.

References chull3d_data::rdim.

Referenced by chull3d_reduce_inner().

HIDDEN void chull3d_Vec_scale ( struct chull3d_data cdata,
int  n,
Coord  a,
Coord x 
)

Definition at line 342 of file chull3d.cpp.

Referenced by chull3d_reduce_inner().

HIDDEN double chull3d_sc ( struct chull3d_data cdata,
basis_s v,
simplex s,
int  k,
int  j 
)

Definition at line 356 of file chull3d.cpp.

References chull3d_data::b_err_min, neighbor::basis, CHULL3D_DELIFT, chull3d_data::exact_bits, chull3d_data::ldetbound, logb(), basis_s::lscale, chull3d_data::lscale, chull3d_data::max_scale, simplex::neigh, chull3d_data::Sb, basis_s::sqa, and basis_s::sqb.

Referenced by chull3d_reduce_inner().

Here is the call graph for this function:

HIDDEN int chull3d_reduce_inner ( struct chull3d_data cdata,
basis_s v,
simplex s,
int  k 
)

Definition at line 399 of file chull3d.cpp.

References chull3d_data::B, neighbor::basis, chull3d_data::basis_vec_size, chull3d_Ax_plus_y(), chull3d_Norm2(), chull3d_sc(), CHULL3D_VA, CHULL3D_VB, chull3d_Vec_dot(), chull3d_Vec_scale(), simplex::neigh, chull3d_data::rdim, basis_s::sqa, and basis_s::sqb.

Referenced by chull3d_reduce(), and chull3d_sees().

Here is the call graph for this function:

HIDDEN int chull3d_reduce ( struct chull3d_data cdata,
basis_s **  v,
point  p,
simplex s,
int  k 
)

Definition at line 440 of file chull3d.cpp.

References chull3d_data::basis_s_list, CHULL3D_NEWLRC, chull3d_reduce_inner(), CHULL3D_trans, CHULL3D_VB, simplex::neigh, and neighbor::vert.

Referenced by chull3d_get_basis_sede(), chull3d_get_normal_sede(), and chull3d_out_of_flat().

Here is the call graph for this function:

HIDDEN void chull3d_get_basis_sede ( struct chull3d_data cdata,
simplex s 
)

Definition at line 453 of file chull3d.cpp.

References neighbor::basis, chull3d_data::cdim, CHULL3D_NULLIFY, chull3d_reduce(), simplex::neigh, basis_s::ref_count, chull3d_data::tt_basis, and neighbor::vert.

Referenced by chull3d_get_normal_sede(), chull3d_out_of_flat(), and chull3d_sees().

Here is the call graph for this function:

HIDDEN int chull3d_out_of_flat ( struct chull3d_data cdata,
simplex root,
point  p 
)

Definition at line 470 of file chull3d.cpp.

References neighbor::basis, chull3d_data::basis_s_size, chull3d_data::cdim, chull3d_get_basis_sede(), CHULL3D_NULLIFY, chull3d_reduce(), simplex::neigh, chull3d_data::p_neigh, simplex::peak, basis_s::sqa, neighbor::vert, and ZERO.

Referenced by chull3d_buildhull().

Here is the call graph for this function:

HIDDEN int chull3d_sees ( struct chull3d_data cdata,
site  p,
simplex s 
)
HIDDEN void chull3d_get_normal_sede ( struct chull3d_data cdata,
simplex s 
)

Definition at line 488 of file chull3d.cpp.

References chull3d_data::b_err_min, neighbor::basis, chull3d_data::basis_s_list, chull3d_data::cdim, chull3d_data::ch_root, chull3d_get_basis_sede(), CHULL3D_NEWLRC, chull3d_Norm2(), chull3d_reduce(), chull3d_sees(), CHULL3D_VB, chull3d_data::hull_infinity, simplex::neigh, simplex::normal, chull3d_data::rdim, basis_s::sqb, neighbor::vert, and ZERO.

Referenced by chull3d_get_normal(), and chull3d_sees().

Here is the call graph for this function:

HIDDEN void chull3d_get_normal ( struct chull3d_data cdata,
simplex s 
)

Definition at line 525 of file chull3d.cpp.

References chull3d_get_normal_sede().

Here is the call graph for this function:

HIDDEN void chull3d_free_hull_storage ( struct chull3d_data cdata)

Definition at line 558 of file chull3d.cpp.

References chull3d_free_basis_s_storage(), chull3d_free_simplex_storage(), and chull3d_free_Tree_storage().

Referenced by bn_3d_chull(), and chull3d_intermediate_set().

Here is the call graph for this function:

HIDDEN void chull3d_visit_fg_i ( struct chull3d_data cdata,
void(*)(struct chull3d_data *, Tree *, int, int)  v_fg,
Tree t,
int  depth,
int  vn,
int  boundary 
)
HIDDEN void chull3d_visit_fg ( struct chull3d_data cdata,
fg faces_gr,
void(*)(struct chull3d_data *, Tree *, int, int)  v_fg 
)

Definition at line 585 of file chull3d.cpp.

References chull3d_visit_fg_i(), fg_node::facets, and chull3d_data::fg_vn.

Here is the call graph for this function:

HIDDEN int chull3d_visit_fg_i_far ( struct chull3d_data cdata,
void(*)(struct chull3d_data *, Tree *, int)  v_fg,
Tree t,
int  depth,
int  vn 
)
HIDDEN void chull3d_visit_fg_far ( struct chull3d_data cdata,
fg faces_gr,
void(*)(struct chull3d_data *, Tree *, int)  v_fg 
)

Definition at line 611 of file chull3d.cpp.

References chull3d_visit_fg_i_far(), fg_node::facets, and chull3d_data::fg_vn.

Here is the call graph for this function:

HIDDEN int chull3d_truet ( struct chull3d_data cdata,
simplex s,
int  i,
void *  dum 
)

Definition at line 652 of file chull3d.cpp.

Referenced by chull3d_visit_triang().

HIDDEN void* chull3d_visit_triang ( struct chull3d_data cdata,
simplex root,
chull3d_visit_func visit 
)

Definition at line 654 of file chull3d.cpp.

References chull3d_truet(), and chull3d_visit_triang_gen().

Referenced by chull3d_visit_hull().

Here is the call graph for this function:

HIDDEN int chull3d_hullt ( struct chull3d_data cdata,
simplex s,
int  i,
void *  dummy 
)

Definition at line 660 of file chull3d.cpp.

Referenced by chull3d_visit_hull().

HIDDEN void* chull3d_facet_test ( struct chull3d_data cdata,
simplex s,
void *  dummy 
)

Definition at line 661 of file chull3d.cpp.

References simplex::peak, and neighbor::vert.

Referenced by chull3d_visit_hull().

HIDDEN void* chull3d_visit_hull ( struct chull3d_data cdata,
simplex root,
chull3d_visit_func visit 
)

Definition at line 663 of file chull3d.cpp.

References chull3d_facet_test(), chull3d_hullt(), chull3d_visit_triang(), and chull3d_visit_triang_gen().

Referenced by bn_3d_chull(), and chull3d_intermediate_set().

Here is the call graph for this function:

HIDDEN void* chull3d_check_simplex ( struct chull3d_data cdata,
simplex s,
void *  dum 
)
HIDDEN void* chull3d_collect_hull_pnts ( struct chull3d_data cdata,
simplex s,
void *  p 
)

Definition at line 704 of file chull3d.cpp.

References bu_ptbl_ins(), chull3d_data::cdim, chull3d_data::input_vert_array, MAXDIM, simplex::neigh, chull3d_data::output_pnts, chull3d_data::point_lookup, chull3d_data::site_num, OSL::Strings::v, neighbor::vert, chull3d_data::vert_array, and chull3d_data::vert_cnt.

Referenced by bn_3d_chull(), and chull3d_intermediate_set().

Here is the call graph for this function:

double logb ( double  x)

Definition at line 789 of file chull3d.cpp.

Referenced by chull3d_sc().

HIDDEN Coord chull3d_maxdist ( int  dim,
point  p1,
point  p2 
)

Definition at line 796 of file chull3d.cpp.

HIDDEN neighbor* chull3d_op_simp ( struct chull3d_data cdata,
simplex a,
simplex b 
)

Definition at line 812 of file chull3d.cpp.

References chull3d_data::cdim, simplex::neigh, and neighbor::simp.

Referenced by chull3d_connect(), and chull3d_make_facets().

HIDDEN neighbor* chull3d_op_vert ( struct chull3d_data cdata,
simplex a,
site  b 
)

Definition at line 825 of file chull3d.cpp.

References chull3d_data::cdim, simplex::neigh, and neighbor::vert.

Referenced by chull3d_connect().

HIDDEN void chull3d_connect ( struct chull3d_data cdata,
simplex s 
)

Definition at line 840 of file chull3d.cpp.

References chull3d_data::cdim, chull3d_op_simp(), chull3d_op_vert(), simplex::neigh, chull3d_data::p, simplex::peak, chull3d_data::pnum, s, neighbor::simp, neighbor::vert, and simplex::visit.

Referenced by chull3d_buildhull().

Here is the call graph for this function:

HIDDEN simplex* chull3d_make_facets ( struct chull3d_data cdata,
simplex seen 
)

Definition at line 880 of file chull3d.cpp.

References neighbor::basis, chull3d_data::cdim, CHULL3D_copy_simp, CHULL3D_NULLIFY, chull3d_op_simp(), chull3d_sees(), simplex::neigh, simplex::normal, chull3d_data::ns, chull3d_data::p, simplex::peak, chull3d_data::pnum, neighbor::simp, neighbor::vert, and simplex::visit.

Referenced by chull3d_buildhull().

Here is the call graph for this function:

HIDDEN simplex* chull3d_search ( struct chull3d_data cdata,
simplex root 
)

Definition at line 949 of file chull3d.cpp.

References chull3d_data::cdim, CHULL3D_pop, CHULL3D_push, chull3d_sees(), MAXDIM, simplex::neigh, chull3d_data::p, simplex::peak, chull3d_data::pnum, s, neighbor::simp, chull3d_data::ss, chull3d_data::st, neighbor::vert, and simplex::visit.

Referenced by chull3d_buildhull().

Here is the call graph for this function:

HIDDEN point chull3d_get_another_site ( struct chull3d_data cdata)

Definition at line 976 of file chull3d.cpp.

References chull3d_data::get_site, chull3d_data::pnum, and chull3d_data::site_num.

Referenced by chull3d_buildhull().

HIDDEN void chull3d_buildhull ( struct chull3d_data cdata,
simplex root 
)

Definition at line 988 of file chull3d.cpp.

References chull3d_data::cdim, chull3d_connect(), chull3d_extend_simplices(), chull3d_get_another_site(), chull3d_make_facets(), chull3d_out_of_flat(), chull3d_search(), chull3d_data::p, and chull3d_data::rdim.

Referenced by chull3d_build_convex_hull().

Here is the call graph for this function:

HIDDEN long chull3d_site_numm ( void *  data,
site  p 
)
HIDDEN site chull3d_new_site ( struct chull3d_data cdata,
site  p,
long  j 
)
HIDDEN site chull3d_read_next_site ( struct chull3d_data cdata,
long  j 
)

Definition at line 1082 of file chull3d.cpp.

References chull3d_new_site(), chull3d_data::input_vert_array, chull3d_data::input_vert_cnt, chull3d_data::maxs, chull3d_data::mins, chull3d_data::mult_up, chull3d_data::next_vert, and chull3d_data::p.

Referenced by chull3d_get_next_site().

Here is the call graph for this function:

HIDDEN void chull3d_make_shuffle ( struct chull3d_data cdata)

Definition at line 1104 of file chull3d.cpp.

References bn_randmt(), chull3d_data::input_vert_cnt, and chull3d_data::shufmat.

Referenced by bn_3d_chull(), and chull3d_intermediate_set().

Here is the call graph for this function:

HIDDEN site chull3d_get_next_site ( void *  data)

Definition at line 1118 of file chull3d.cpp.

References chull3d_read_next_site(), chull3d_data::s_num, and chull3d_data::shufmat.

Referenced by bn_3d_chull(), and chull3d_intermediate_set().

Here is the call graph for this function:

HIDDEN int chull3d_intermediate_set ( point_t **  vertices,
int *  num_vertices,
const point_t *  input_points_3d,
int  num_input_pnts 
)