Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
gle/tube.h
/* |
* tube.h |
* |
* FUNCTION: |
* Tubing and Extrusion header file. |
* This file provides protypes and defines for the extrusion |
* and tubing primitives. |
* |
* HISTORY: |
* Linas Vepstas 1990, 1991 |
*/ |
#ifndef __TUBE_H__ |
#define __TUBE_H__ |
#ifdef __cplusplus |
extern "C" { |
#endif |
/** |
GLE API revision history: |
GLE_API_VERSION is updated to reflect GLE API changes (interface |
changes, semantic changes, deletions, or additions). |
GLE_API_VERSION=228 GLUT 3.7 release of GLE. |
**/ |
#ifndef GLE_API_VERSION /* allow this to be overriden */ |
#define GLE_API_VERSION 228 |
#endif |
/* some types */ |
#ifndef gleDouble |
#define gleDouble double |
#endif |
typedef gleDouble gleAffine[2][3]; |
/* ====================================================== */ |
/* defines for tubing join styles */ |
#define TUBE_JN_RAW 0x1 |
#define TUBE_JN_ANGLE 0x2 |
#define TUBE_JN_CUT 0x3 |
#define TUBE_JN_ROUND 0x4 |
#define TUBE_JN_MASK 0xf /* mask bits */ |
#define TUBE_JN_CAP 0x10 |
/* determine how normal vectors are to be handled */ |
#define TUBE_NORM_FACET 0x100 |
#define TUBE_NORM_EDGE 0x200 |
#define TUBE_NORM_PATH_EDGE 0x400 /* for spiral, lathe, helix primitives */ |
#define TUBE_NORM_MASK 0xf00 /* mask bits */ |
/* closed or open countours */ |
#define TUBE_CONTOUR_CLOSED 0x1000 |
#define GLE_TEXTURE_ENABLE 0x10000 |
#define GLE_TEXTURE_STYLE_MASK 0xff |
#define GLE_TEXTURE_VERTEX_FLAT 1 |
#define GLE_TEXTURE_NORMAL_FLAT 2 |
#define GLE_TEXTURE_VERTEX_CYL 3 |
#define GLE_TEXTURE_NORMAL_CYL 4 |
#define GLE_TEXTURE_VERTEX_SPH 5 |
#define GLE_TEXTURE_NORMAL_SPH 6 |
#define GLE_TEXTURE_VERTEX_MODEL_FLAT 7 |
#define GLE_TEXTURE_NORMAL_MODEL_FLAT 8 |
#define GLE_TEXTURE_VERTEX_MODEL_CYL 9 |
#define GLE_TEXTURE_NORMAL_MODEL_CYL 10 |
#define GLE_TEXTURE_VERTEX_MODEL_SPH 11 |
#define GLE_TEXTURE_NORMAL_MODEL_SPH 12 |
#ifdef GL_32 |
/* HACK for GL 3.2 -- needed because no way to tell if lighting is on. */ |
#define TUBE_LIGHTING_ON 0x80000000 |
#define gleExtrusion extrusion |
#define gleSetJoinStyle setjoinstyle |
#define gleGetJoinStyle getjoinstyle |
#define glePolyCone polycone |
#define glePolyCylinder polycylinder |
#define gleSuperExtrusion super_extrusion |
#define gleTwistExtrusion twist_extrusion |
#define gleSpiral spiral |
#define gleLathe lathe |
#define gleHelicoid helicoid |
#define gleToroid toroid |
#define gleScrew screw |
#endif /* GL_32 */ |
extern int gleGetJoinStyle (void); |
extern void gleSetJoinStyle (int style); /* bitwise OR of flags */ |
extern int gleGetNumSlices(void); |
extern void gleSetNumSlices(int slices); |
/* draw polyclinder, specified as a polyline */ |
extern void glePolyCylinder (int npoints, /* num points in polyline */ |
gleDouble point_array[][3], /* polyline vertces */ |
float color_array[][3], /* colors at polyline verts */ |
gleDouble radius); /* radius of polycylinder */ |
/* draw polycone, specified as a polyline with radii */ |
extern void glePolyCone (int npoints, /* numpoints in poly-line */ |
gleDouble point_array[][3], /* polyline vertices */ |
float color_array[][3], /* colors at polyline verts */ |
gleDouble radius_array[]); /* cone radii at polyline verts */ |
/* extrude arbitrary 2D contour along arbitrary 3D path */ |
extern void gleExtrusion (int ncp, /* number of contour points */ |
gleDouble contour[][2], /* 2D contour */ |
gleDouble cont_normal[][2], /* 2D contour normals */ |
gleDouble up[3], /* up vector for contour */ |
int npoints, /* numpoints in poly-line */ |
gleDouble point_array[][3], /* polyline vertices */ |
float color_array[][3]); /* colors at polyline verts */ |
/* extrude 2D contour, specifying local rotations (twists) */ |
extern void gleTwistExtrusion (int ncp, /* number of contour points */ |
gleDouble contour[][2], /* 2D contour */ |
gleDouble cont_normal[][2], /* 2D contour normals */ |
gleDouble up[3], /* up vector for contour */ |
int npoints, /* numpoints in poly-line */ |
gleDouble point_array[][3], /* polyline vertices */ |
float color_array[][3], /* color at polyline verts */ |
gleDouble twist_array[]); /* countour twists (in degrees) */ |
/* extrude 2D contour, specifying local affine tranformations */ |
extern void gleSuperExtrusion (int ncp, /* number of contour points */ |
gleDouble contour[][2], /* 2D contour */ |
gleDouble cont_normal[][2], /* 2D contour normals */ |
gleDouble up[3], /* up vector for contour */ |
int npoints, /* numpoints in poly-line */ |
gleDouble point_array[][3], /* polyline vertices */ |
float color_array[][3], /* color at polyline verts */ |
gleDouble xform_array[][2][3]); /* 2D contour xforms */ |
/* spiral moves contour along helical path by parallel transport */ |
extern void gleSpiral (int ncp, /* number of contour points */ |
gleDouble contour[][2], /* 2D contour */ |
gleDouble cont_normal[][2], /* 2D contour normals */ |
gleDouble up[3], /* up vector for contour */ |
gleDouble startRadius, /* spiral starts in x-y plane */ |
gleDouble drdTheta, /* change in radius per revolution */ |
gleDouble startZ, /* starting z value */ |
gleDouble dzdTheta, /* change in Z per revolution */ |
gleDouble startXform[2][3], /* starting contour affine xform */ |
gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ |
gleDouble startTheta, /* start angle in x-y plane */ |
gleDouble sweepTheta); /* degrees to spiral around */ |
/* lathe moves contour along helical path by helically shearing 3D space */ |
extern void gleLathe (int ncp, /* number of contour points */ |
gleDouble contour[][2], /* 2D contour */ |
gleDouble cont_normal[][2], /* 2D contour normals */ |
gleDouble up[3], /* up vector for contour */ |
gleDouble startRadius, /* spiral starts in x-y plane */ |
gleDouble drdTheta, /* change in radius per revolution */ |
gleDouble startZ, /* starting z value */ |
gleDouble dzdTheta, /* change in Z per revolution */ |
gleDouble startXform[2][3], /* starting contour affine xform */ |
gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ |
gleDouble startTheta, /* start angle in x-y plane */ |
gleDouble sweepTheta); /* degrees to spiral around */ |
/* similar to spiral, except contour is a circle */ |
extern void gleHelicoid (gleDouble rToroid, /* circle contour (torus) radius */ |
gleDouble startRadius, /* spiral starts in x-y plane */ |
gleDouble drdTheta, /* change in radius per revolution */ |
gleDouble startZ, /* starting z value */ |
gleDouble dzdTheta, /* change in Z per revolution */ |
gleDouble startXform[2][3], /* starting contour affine xform */ |
gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ |
gleDouble startTheta, /* start angle in x-y plane */ |
gleDouble sweepTheta); /* degrees to spiral around */ |
/* similar to lathe, except contour is a circle */ |
extern void gleToroid (gleDouble rToroid, /* circle contour (torus) radius */ |
gleDouble startRadius, /* spiral starts in x-y plane */ |
gleDouble drdTheta, /* change in radius per revolution */ |
gleDouble startZ, /* starting z value */ |
gleDouble dzdTheta, /* change in Z per revolution */ |
gleDouble startXform[2][3], /* starting contour affine xform */ |
gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */ |
gleDouble startTheta, /* start angle in x-y plane */ |
gleDouble sweepTheta); /* degrees to spiral around */ |
/* draws a screw shape */ |
extern void gleScrew (int ncp, /* number of contour points */ |
gleDouble contour[][2], /* 2D contour */ |
gleDouble cont_normal[][2], /* 2D contour normals */ |
gleDouble up[3], /* up vector for contour */ |
gleDouble startz, /* start of segment */ |
gleDouble endz, /* end of segment */ |
gleDouble twist); /* number of rotations */ |
extern void gleTextureMode (int mode); |
#ifdef __cplusplus |
} |
#endif |
#endif /* __TUBE_H__ */ |
/* ================== END OF FILE ======================= */ |
Copyright © 2008 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2008-02-08