BRL-CAD
|
Data Structures | |
struct | pnt |
struct | pnt_color |
struct | pnt_scale |
struct | pnt_normal |
struct | pnt_color_scale |
struct | pnt_color_normal |
struct | pnt_scale_normal |
struct | pnt_color_scale_normal |
struct | rt_pnts_internal |
Macros | |
#define | RT_PNTS_CK_MAGIC(_p) BU_CKMAG(_p, RT_PNTS_INTERNAL_MAGIC, "rt_pnts_internal") |
Enumerations | |
enum | rt_pnt_type { RT_PNT_TYPE_PNT = 0 , RT_PNT_TYPE_COL = 0+1 , RT_PNT_TYPE_SCA = 0+2 , RT_PNT_TYPE_NRM = 0+4 , RT_PNT_TYPE_COL_SCA = 0+1+2 , RT_PNT_TYPE_COL_NRM = 0+1+4 , RT_PNT_TYPE_SCA_NRM = 0+2+4 , RT_PNT_TYPE_COL_SCA_NRM = 0+1+2+4 , RT_PNT_UNKNOWN = 8 } |
#define RT_PNTS_CK_MAGIC | ( | _p | ) | BU_CKMAG(_p, RT_PNTS_INTERNAL_MAGIC, "rt_pnts_internal") |
enum rt_pnt_type |
ID_PNTS
Points are represented to a structure that contains exactly the data that it needs for that 'type' of point. The reason this was done over using something like a union was to fully optimize memory usage so that the maximum number of points could be stored without resorting to out-of-core techniques. A union is at least the size of the largest type and would have wasted memory.
By using this data-driven approach of type identification, it does result in needing to have a switching table for all supported types in order to access data. This could be avoided by storing them as multiple lists (wasting a few bytes for unused pointers) but is left as an exercise to the reader.
Enumerator | |
---|---|
RT_PNT_TYPE_PNT | |
RT_PNT_TYPE_COL | |
RT_PNT_TYPE_SCA | |
RT_PNT_TYPE_NRM | |
RT_PNT_TYPE_COL_SCA | |
RT_PNT_TYPE_COL_NRM | |
RT_PNT_TYPE_SCA_NRM | |
RT_PNT_TYPE_COL_SCA_NRM | |
RT_PNT_UNKNOWN |