/* Last edited on 2011-09-13 02:08:24 by stolfilocal */ /* _*_ latin-1 _*_ */ /* Bezier model of human body */ /* Coordinate axes are X = forwards, Y = right, Z = up. */ #ifndef bzb_limb_H #define bzb_limb_H #include typedef struct bzb_model_limb_t { int nlip; /* Number of patches in lip ring. */ bzb_cquad_t **lip; /* Control quads for first ring. */ bzb_fork_type_t ftype; /* Fork type. */ int nsub; /* Number of sub-limbs. */ struct bzb_model_limb_t **sub; /* Sub-limbs. */ } bzb_model_limb_t; /* A branched tube structure made of Bézier patches joined with C1 continuity. The tube is a ring of {nlip} Bézier patches, whose proximal edge is open and unspecified, and whose distal edge is attached to zero or more sub-limbs. Fields {lip[0..nlip]} are the control quads for the first ring. Control points {lip[j].cp[0]} and {lip[j].cp[2]} lie closer to the free edge, {lip[j].cp[1]} and {lip[j].cp[3]} lie closer to thesub-limbs. Control points {lip[j].cp[2]} and {lip[j].cp[3]} are the ones closest {lip[j+1].cp[0]} and {lip[j+1].cp[1]}, respectively. Fields {sub[0..nsub]} are the sub-limbs. If {nsub} is zero, the limb is a cap; in that case {lip[j].cp[1]} and {lip[j].cp[3]} are irrelevant. Othwewise, the limbs are connected to the ring according to the {ftype} code. */ #endif