58 lines
2.3 KiB
C
58 lines
2.3 KiB
C
#ifndef __tessmono_h_
|
|
#define __tessmono_h_
|
|
|
|
/*
|
|
** Copyright 1994, Silicon Graphics, Inc.
|
|
** All Rights Reserved.
|
|
**
|
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
|
|
** the contents of this file may not be disclosed to third parties, copied or
|
|
** duplicated in any form, in whole or in part, without the prior written
|
|
** permission of Silicon Graphics, Inc.
|
|
**
|
|
** RESTRICTED RIGHTS LEGEND:
|
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
|
** rights reserved under the Copyright Laws of the United States.
|
|
**
|
|
** Author: Eric Veach, July 1994.
|
|
*/
|
|
|
|
|
|
/* __gl_meshTesselateMonoRegion( face ) tesselates a monotone region
|
|
* (what else would it do??) The region must consist of a single
|
|
* loop of half-edges (see mesh.h) oriented CCW. "Monotone" in this
|
|
* case means that any vertical line intersects the interior of the
|
|
* region in a single interval.
|
|
*
|
|
* Tesselation consists of adding interior edges (actually pairs of
|
|
* half-edges), to split the region into non-overlapping triangles.
|
|
*
|
|
* __gl_meshTesselateInterior( mesh ) tesselates each region of
|
|
* the mesh which is marked "inside" the polygon. Each such region
|
|
* must be monotone.
|
|
*
|
|
* __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces
|
|
* which are not marked "inside" the polygon. Since further mesh operations
|
|
* on NULL faces are not allowed, the main purpose is to clean up the
|
|
* mesh so that exterior loops are not represented in the data structure.
|
|
*
|
|
* __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the
|
|
* winding numbers on all edges so that regions marked "inside" the
|
|
* polygon have a winding number of "value", and regions outside
|
|
* have a winding number of 0.
|
|
*
|
|
* If keepOnlyBoundary is TRUE, it also deletes all edges which do not
|
|
* separate an interior region from an exterior one.
|
|
*/
|
|
|
|
void __gl_meshTesselateMonoRegion( GLUface *face );
|
|
void __gl_meshTesselateInterior( GLUmesh *mesh );
|
|
void __gl_meshDiscardExterior( GLUmesh *mesh );
|
|
void __gl_meshSetWindingNumber( GLUmesh *mesh, int value,
|
|
GLboolean keepOnlyBoundary );
|
|
|
|
#endif
|