96#define BN_CK_TABLE(_p) BU_CKMAG(_p, BN_TABLE_MAGIC, "bn_table")
97#define BN_TABLE_NULL ((struct bn_table *)NULL)
100#ifndef NO_BOMBING_MACROS
101# define BN_GET_TABLE(_table, _nx) { \
102 if ((_nx) < 1) bu_bomb("RT_GET_TABLE() _nx < 1\n"); \
103 _table = (struct bn_table *)bu_calloc(1, \
104 sizeof(struct bn_table) + sizeof(fastf_t)*(_nx), \
105 "struct bn_table"); \
106 _table->magic = BN_TABLE_MAGIC; \
107 _table->nx = (_nx); }
109# define BN_GET_TABLE(_table, _nx) { \
110 _table = (struct bn_table *)bu_calloc(1, \
111 sizeof(struct bn_table) + sizeof(fastf_t)*(_nx), \
112 "struct bn_table"); \
113 _table->magic = BN_TABLE_MAGIC; \
114 _table->nx = (_nx); }
123#define BN_CK_TABDATA(_p) BU_CKMAG(_p, BN_TABDATA_MAGIC, "bn_tabdata")
124#define BN_TABDATA_NULL ((struct bn_tabdata *)NULL)
126#define BN_SIZEOF_TABDATA_Y(_tabdata) sizeof(fastf_t)*((_tabdata)->ny)
127#define BN_SIZEOF_TABDATA(_table) (sizeof(struct bn_tabdata) + \
128 sizeof(fastf_t)*((_table)->nx-1))
131#define BN_GET_TABDATA(_data, _table) { \
132 BN_CK_TABLE(_table);\
133 _data = (struct bn_tabdata *)bu_calloc(1, \
134 BN_SIZEOF_TABDATA(_table), "struct bn_tabdata"); \
135 _data->magic = BN_TABDATA_MAGIC; \
136 _data->ny = (_table)->nx; \
137 _data->table = (_table); }
482 double lower_wavelen,
483 double upper_wavelen);
Header file for the BRL-CAD common definitions.
void bn_tabdata_freq_shift(struct bn_tabdata *out, const struct bn_tabdata *in, double offset)
void bn_tabdata_free(struct bn_tabdata *data)
size_t bn_table_interval_num_samples(const struct bn_table *tabp, double low, double hi)
struct bn_tabdata * bn_tabdata_malloc_array(const struct bn_table *tabp, size_t num)
struct bn_tabdata * bn_read_table_and_tabdata(const char *filename)
void bn_tabdata_blend3(struct bn_tabdata *out, double scale1, const struct bn_tabdata *in1, double scale2, const struct bn_tabdata *in2, double scale3, const struct bn_tabdata *in3)
struct bn_tabdata * bn_tabdata_dup(const struct bn_tabdata *in)
struct bn_table * bn_table_merge2(const struct bn_table *a, const struct bn_table *b)
struct bn_tabdata * bn_tabdata_resample_max(const struct bn_table *newtable, const struct bn_tabdata *olddata)
void bn_tabdata_copy(struct bn_tabdata *out, const struct bn_tabdata *in)
int bn_table_write(const char *filename, const struct bn_table *tabp)
void bn_tabdata_mul(struct bn_tabdata *out, const struct bn_tabdata *in1, const struct bn_tabdata *in2)
double bn_tabdata_area1(const struct bn_tabdata *in)
struct bn_tabdata * bn_tabdata_binary_read(const char *filename, size_t num, const struct bn_table *tabp)
void bn_tabdata_to_tcl(struct bu_vls *vp, const struct bn_tabdata *data)
void bn_tabdata_mul3(struct bn_tabdata *out, const struct bn_tabdata *in1, const struct bn_tabdata *in2, const struct bn_tabdata *in3)
void bn_table_free(struct bn_table *tabp)
void bn_ck_table(const struct bn_table *tabp)
double bn_tabdata_area2(const struct bn_tabdata *in)
struct bn_table * bn_table_read(const char *filename)
struct bn_tabdata * bn_tabdata_resample_avg(const struct bn_table *newtable, const struct bn_tabdata *olddata)
void bn_tabdata_blend2(struct bn_tabdata *out, double scale1, const struct bn_tabdata *in1, double scale2, const struct bn_tabdata *in2)
size_t bn_table_delete_sample_pnts(struct bn_table *tabp, size_t i, size_t j)
void bn_tabdata_incr_mul2_scale(struct bn_tabdata *out, const struct bn_tabdata *in1, const struct bn_tabdata *in2, double scale)
void bn_tabdata_add(struct bn_tabdata *out, const struct bn_tabdata *in1, const struct bn_tabdata *in2)
void bn_tabdata_scale(struct bn_tabdata *out, const struct bn_tabdata *in1, double scale)
void bn_pr_table(const char *title, const struct bn_table *tabp)
struct bn_tabdata * bn_tabdata_mk_linear_filter(const struct bn_table *spectrum, double lower_wavelen, double upper_wavelen)
fastf_t bn_table_lin_interp(const struct bn_tabdata *samp, double wl)
void bn_tabdata_incr_mul3_scale(struct bn_tabdata *out, const struct bn_tabdata *in1, const struct bn_tabdata *in2, const struct bn_tabdata *in3, double scale)
void bn_pr_tabdata(const char *title, const struct bn_tabdata *data)
void bn_table_scale(struct bn_table *tabp, double scale)
struct bn_tabdata * bn_tabdata_from_array(const double *array)
double bn_tabdata_mul_area2(const struct bn_tabdata *in1, const struct bn_tabdata *in2)
struct bn_tabdata * bn_tabdata_get_constval(double val, const struct bn_table *tabp)
double bn_tabdata_mul_area1(const struct bn_tabdata *in1, const struct bn_tabdata *in2)
void bn_tabdata_join2(struct bn_tabdata *out, const struct bn_tabdata *in1, double scale2, const struct bn_tabdata *in2, double scale3, const struct bn_tabdata *in3)
void bn_tabdata_constval(struct bn_tabdata *data, double val)
int bn_print_table_and_tabdata(const char *filename, const struct bn_tabdata *data)
struct bn_table * bn_table_make_uniform(size_t num, double first, double last)
void bn_tabdata_join1(struct bn_tabdata *out, const struct bn_tabdata *in1, double scale, const struct bn_tabdata *in2)
void int float float float * scale
double fastf_t
fastest 64-bit (or larger) floating point type
Global registry of recognized magic numbers.
fastf_t y[1]
array of ny samples, dynamically sized
const struct bn_table * table
Up pointer to definition of X axis.
fastf_t x[1]
array of nx+1 wavelengths, dynamically sized
fundamental vector, matrix, quaternion math macros