00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 typedef struct
00024 {
00025 int numpoints;
00026 vec3_t p[4];
00027 } winding_t;
00028
00029 #define MAX_POINTS_ON_WINDING 64
00030
00031
00032 #ifndef ON_EPSILON
00033 #define ON_EPSILON 0.1
00034 #endif
00035
00036 winding_t *AllocWinding (int points);
00037 vec_t WindingArea (winding_t *w);
00038 void WindingCenter (winding_t *w, vec3_t center);
00039 void ClipWindingEpsilon (winding_t *in, vec3_t normal, vec_t dist,
00040 vec_t epsilon, winding_t **front, winding_t **back);
00041 winding_t *ChopWinding (winding_t *in, vec3_t normal, vec_t dist);
00042 winding_t *CopyWinding (winding_t *w);
00043 winding_t *ReverseWinding (winding_t *w);
00044 winding_t *BaseWindingForPlane (vec3_t normal, vec_t dist);
00045 void CheckWinding (winding_t *w);
00046 void WindingPlane (winding_t *w, vec3_t normal, vec_t *dist);
00047 void RemoveColinearPoints (winding_t *w);
00048 int WindingOnPlaneSide (winding_t *w, vec3_t normal, vec_t dist);
00049 void FreeWinding (winding_t *w);
00050 void WindingBounds (winding_t *w, vec3_t mins, vec3_t maxs);
00051
00052 void AddWindingToConvexHull( winding_t *w, winding_t **hull, vec3_t normal );
00053
00054 void ChopWindingInPlace (winding_t **w, vec3_t normal, vec_t dist, vec_t epsilon);
00055
00056
00057 void pw(winding_t *w);