/usr/include/crystalspace-2.0/csgeom/triangulate.h is in libcrystalspace-dev 2.0+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | /*
Copyright (C) 2005 by Christopher Nelson
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __CS_TRIANGULATE_POLY_H__
#define __CS_TRIANGULATE_POLY_H__
#include "csgeom/poly2d.h"
#include "csgeom/trimesh.h"
#include "csutil/dirtyaccessarray.h"
/*****************************************************************/
/** Static class to triangulate any contour/polygon efficiently **/
/** You should replace Vector2d with whatever your own Vector **/
/** class might be. Does not support polygons with holes. **/
/** Uses STL vectors to represent a dynamic array of vertices. **/
/** This code snippet was submitted to FlipCode.com by **/
/** John W. Ratcliff (jratcliff@verant.com) on July 22, 2000 **/
/** I did not write the original code/algorithm for this **/
/** this triangulator, in fact, I can't even remember where I **/
/** found it in the first place. However, I did rework it into **/
/** the following black-box static class so you can make easy **/
/** use of it in your own code. Simply replace Vector2d with **/
/** whatever your own Vector implementation might be. **/
/*****************************************************************/
// Typedef a vector of vertices which are used to represent
// a polygon/contour.
typedef csDirtyAccessArray< csVector2 > csContour2;
/** This triangulates a simple polygon. It does not handle holes, but it is fast and efficient. */
class CS_CRYSTALSPACE_EXPORT csTriangulate2
{
public:
csTriangulate2() {}
~csTriangulate2() {}
/** Triangulate a contour/polygon, places results in a triangle mesh, with the resulting vertices in result_vertices. */
static bool Process(const csContour2 &contour,
csTriangleMesh &result, csContour2 &result_vertices);
/** Compute area of a contour/polygon. */
static float Area(const csContour2 &contour);
/** Decide if point Px/Py is inside triangle defined by
* (Ax,Ay) (Bx,By) (Cx,Cy) */
static bool InsideTriangle(float Ax, float Ay,
float Bx, float By,
float Cx, float Cy,
float Px, float Py);
private:
static bool Snip(const csContour2 &contour,int u,int v,int w,int n,int *V);
};
#endif
|