spline3d.h File Reference

spline3d.h File Reference
#include "maxheap.h"
#include "polyshp.h"
#include "GraphicsConstants.h"

Classes

class  SplinePoint
 Provides the vertex-level point information for the Spline3D class. More...
 
class  SplineKnotAssy
 Used for the internal storage of spline knot assemblies in the Spline3D class. More...
 
class  SplineKnot
 Describes a single knot in a spline. More...
 
class  Spline3D
 General-purpose 3D spline class. More...
 

Macros

#define BEZ_SHAPE_KNOT   (1<<0)
 A knot point. More...
 
#define BEZ_SHAPE_INTERPOLATED   (1<<1)
 An interpolated point between two knots. More...
 
#define LTYPE_CURVE   0
 Specifies that the segment should interpolate based on the bezier handles for the segment. More...
 
#define LTYPE_LINE   1
 Specifies that the segment should go straight from knot to knot and ignore the bezier handles. More...
 
#define CURVE_CURVE   (LTYPE_CURVE | (LTYPE_CURVE<<2))
 
#define LINE_CURVE   (LTYPE_LINE | (LTYPE_CURVE<<2))
 
#define CURVE_LINE   (LTYPE_CURVE | (LTYPE_LINE<<2))
 
#define LINE_LINE   (LTYPE_LINE | (LTYPE_LINE<<2))
 
#define KTYPE_AUTO   0
 Produces the bezier handles automatically to produce a smooth curve. More...
 
#define KTYPE_CORNER   1
 Produces a sharp corner. More...
 
#define KTYPE_BEZIER   2
 This knot type produces bezier handles that are collinear (the bezier vectors coming out of the knot are collinear). More...
 
#define KTYPE_BEZIER_CORNER   (KTYPE_BEZIER | KTYPE_CORNER)
 This knot type has bezier handles but they are not constrained to be opposite each other. More...
 
#define KTYPE_RESET   4
 
#define PARM_UNIFORM   0
 
#define PARM_ARCLENGTH   1
 
#define PARM_CENTRIPETAL   2
 
#define PARM_CUSTOM   3
 
#define DRAW_IDLE   0
 
#define DRAW_INITIAL_MOUSE_DOWN   1
 
#define DRAW_FREEMOVE_POINT   2
 
#define DRAW_FREEMOVE_POINT_MOUSE_DOWN   3
 Inserting's initial click inside spline. More...
 
#define DRAW_INITIAL_BEZ_ADJ   11
 
#define DRAW_DRAGGING_VECTOR   22
 
#define SPLINE_INTERP_SIMPLE   0
 Parameter space based on segments. More...
 
#define SPLINE_INTERP_NORMALIZED   1
 Parameter space normalized to curve length. More...
 
#define SPLINE_MATID_SHIFT   16
 The mat ID is stored in the HIWORD of the knot flags. More...
 
#define SPLINE_MATID_MASK   0xFFFF
 The mat ID is stored in the HIWORD of the knot flags. More...
 
#define SEGMENT_VISIBLE   (1<<0)
 
#define SPLINEKNOT_NO_SNAP   (1<<1)
 Suppresses snapping to knot if set. More...
 
#define SPLINEKNOT_ADD_SEL   (1<<2)
 Primarily for internal use, and is designed for the new "connect copy" feature of spline segments. More...
 
#define SPLINEKNOT_USER1   (1 << 8)
 Developer-defined knot flags Flag bits 8-15 are reserved for use by developers. More...
 
#define SPLINEKNOT_USER2   (1 << 9)
 
#define SPLINEKNOT_USER3   (1 << 10)
 
#define SPLINEKNOT_USER4   (1 << 11)
 
#define SPLINEKNOT_USER5   (1 << 12)
 
#define SPLINEKNOT_USER6   (1 << 13)
 
#define SPLINEKNOT_USER7   (1 << 14)
 
#define SPLINEKNOT_USER8   (1 << 15)
 
#define SPLINEKNOT_USERFLAGS   (SPLINEKNOT_USER1 | SPLINEKNOT_USER2 | SPLINEKNOT_USER3 | SPLINEKNOT_USER4 | SPLINEKNOT_USER5 | SPLINEKNOT_USER6 | SPLINEKNOT_USER7 | SPLINEKNOT_USER8)
 
#define SPLINE_CLOSED   (1<<0)
 
#define SPLINE_ORTHOG   (1<<1)
 

Macro Definition Documentation

#define SPLINE_MATID_SHIFT   16

The mat ID is stored in the HIWORD of the knot flags.

#define SPLINE_MATID_MASK   0xFFFF

The mat ID is stored in the HIWORD of the knot flags.

#define SEGMENT_VISIBLE   (1<<0)
#define SPLINEKNOT_NO_SNAP   (1<<1)

Suppresses snapping to knot if set.

#define SPLINEKNOT_ADD_SEL   (1<<2)

Primarily for internal use, and is designed for the new "connect copy" feature of spline segments.

The method XFormVerts() normally operates on the selected knots (or the knots of selected spline segments), but if the knots have the SPLINEKNOT_ADD_SEL flag set, and the SplineShape also has the ES_ADDED_SELECT flag set, then those additional knots will be affected as well. Additional selection for transformation

#define SPLINEKNOT_USER1   (1 << 8)

Developer-defined knot flags Flag bits 8-15 are reserved for use by developers.

These bits should only be used temporarily, since other developers may also use them for other purposes.

#define SPLINEKNOT_USER2   (1 << 9)
#define SPLINEKNOT_USER3   (1 << 10)
#define SPLINEKNOT_USER4   (1 << 11)
#define SPLINEKNOT_USER5   (1 << 12)
#define SPLINEKNOT_USER6   (1 << 13)
#define SPLINEKNOT_USER7   (1 << 14)
#define SPLINEKNOT_USER8   (1 << 15)