CGAL 3.4 (Default branch)


 
Thread Tools Search this Thread
Special Forums News, Links, Events and Announcements Software Releases - RSS News CGAL 3.4 (Default branch)
# 1  
Old 01-30-2009
CGAL 3.4 (Default branch)

CGAL, the Computational Geometry Algorithms Library, is a large C++ library of geometric data structures and algorithms such as Delaunay triangulations, mesh generation, Boolean operations on polygons, and various geometry processing algorithms. CGAL is used in various areas: computer graphics, scientific visualization, computer aided design and modeling, geographic information systems, molecular biology, medical imaging, robotics and motion planning, and numerical methods. License: Q Public License (QPL) Changes:
An important change from CGAL 3.3 to 3.4 is the switch to CMake for the installation. Besides improvements to existing packages, this release offers the following new algorithms and data structures: Polynomial (provides multi-variate polynomials), Modular Arithmetic (provides arithmetic over finite fields), 3D Spherical Geometry Kernel (provides functionalities on spheres, circles, circular arcs, and line segments in 3D), CGAL and the Qt4 GraphicsView (many 2D objects can be rendered in a QGraphicsView). Image

Image

More...
Login or Register to Ask a Question

Previous Thread | Next Thread
Login or Register to Ask a Question
SbTesselator(3) 						       Coin							   SbTesselator(3)

NAME
SbTesselator - The SbTesselator class is used to tessellate polygons into triangles. SbTesselator is used within Coin to split polygons into triangles. It handles concave polygons, does Delaunay triangulation and avoids generating self-intersecting triangles. SYNOPSIS
#include <Inventor/SbTesselator.h> Public Member Functions SbTesselator (SbTesselatorCB *func=NULL, void *data=NULL) ~SbTesselator (void) void beginPolygon (SbBool keepVertices=FALSE, const SbVec3f &normal=SbVec3f(0.0f, 0.0f, 0.0f)) void addVertex (const SbVec3f &v, void *data) void endPolygon (void) void setCallback (SbTesselatorCB *func, void *data) Detailed Description The SbTesselator class is used to tessellate polygons into triangles. SbTesselator is used within Coin to split polygons into triangles. It handles concave polygons, does Delaunay triangulation and avoids generating self-intersecting triangles. Here's a simple example which shows how to tessellate a quad polygon with corners in <0, 0, 0>, <1, 0, 0>, <1, 1, 0> and <0, 1, 0>. // Callback function for the tessellator. Called once for each // generated triangle with the vertices. static void tess_cb(void * v0, void * v1, void * v2, void * cbdata) { SbVec3f * vtx0 = (SbVec3f *)v0; SbVec3f * vtx1 = (SbVec3f *)v1; SbVec3f * vtx2 = (SbVec3f *)v2; (void) fprintf(stdout, 'triangle: <%f, %f, %f> <%f, %f, %f> <%f, %f, %f>0, (*vtx0)[0], (*vtx0)[1], (*vtx0)[2], (*vtx1)[0], (*vtx1)[1], (*vtx1)[2], (*vtx2)[0], (*vtx2)[1], (*vtx2)[2]); // Do stuff with triangle here. } static SbVec3f vertices[] = { SbVec3f(1, 0, 0), SbVec3f(1, 1, 0), SbVec3f(0, 1, 0), SbVec3f(0, 0, 0) }; SbTesselator mytessellator(tess_cb, NULL); mytessellator.beginPolygon(); for (int i=0; i < 4; i++) { mytessellator.addVertex(vertices[i], &vertices[i]); } mytessellator.endPolygon(); The call to SbTesselator::endPolygon() triggers the SbTesselator to spring into action, calling the tess_cb() function for each triangle it generates. The reason we use 2 arguments to SbTesselator::addVertex() and passes void pointers for the vertices to the callback function is to make it possible to have more complex structures than just the coordinates themselves (as in the example above), like material information, lighting information or whatever other attributes your vertices have. This class is not part of the original Open Inventor API. Another option for tessellating polygons is the tessellator of the GLU library. It has some features not part of SbTesselator (like handling hulls), but the GLU library is known to have bugs in various implementations and doesn't do Delaunay triangulation. If you however still prefer to use the GLU tessellator instead of this one, that can be forced by setting an environment variable: (void) coin_setenv('COIN_PREFER_GLU_TESSELLATOR', '1', 1); Constructor &; Destructor Documentation SbTesselator::SbTesselator (SbTesselatorCB *func = NULL, void *data = NULL) Initializes a tessellator. The callback argument specifies a function which will be called for each triangle returned by the tessellator. The callback function will get three pointers to each vertex and the userdata pointer. The vertex pointers are specified in the SbTesselator::addVertex() method. SbTesselator::~SbTesselator (void) Destructor. Member Function Documentation void SbTesselator::beginPolygon (SbBoolkeepVerts = FALSE, const SbVec3f &normal = SbVec3f(0.0f, 0.0f, 0.0f)) Initializes new polygon. You can explicitly set the polygon normal if you know what it is. Otherwise it will be calculated internally. If keepVerts is TRUE, all vertices will be included in the returned triangles, even though this might lead to triangles without area. void SbTesselator::addVertex (const SbVec3f &v, void *data) Adds a new vertex to the polygon. data will be returned as a vertex in the callback-function. void SbTesselator::endPolygon (void) Signals the tessellator to begin tessellating. The callback function specified in the constructor (or set using the SbTesselator::setCallback() method) will be called for each triangle before returning. void SbTesselator::setCallback (SbTesselatorCB *func, void *data) Sets the callback function for this tessellator. Author Generated automatically by Doxygen for Coin from the source code. Version 3.1.3 Wed May 23 2012 SbTesselator(3)