Revision 1e4afad04863d46501e9f1d3784399a04f5109b4 authored by Lars Bilke on 28 July 2023, 08:40:44 UTC, committed by Lars Bilke on 28 July 2023, 08:40:44 UTC
1 parent 9f609d5
EarClippingTriangulation.h
/**
* \file
* \author Thomas Fischer
* \date 2011-02-23
* \brief Definition of the EarClippingTriangulation class.
*
* \copyright
* Copyright (c) 2012-2023, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include <list>
#include <vector>
#include "AnalyticalGeometry.h"
namespace GeoLib
{
class Polygon;
class Triangle;
class EarClippingTriangulation final
{
public:
EarClippingTriangulation(GeoLib::Polygon const& polygon,
std::list<GeoLib::Triangle>& triangles,
bool rot = true);
~EarClippingTriangulation();
private:
/**
* copies the points of the polygon to the vector _pnts
*/
inline void copyPolygonPoints(GeoLib::Polygon const& polygon);
inline void ensureCWOrientation();
inline bool isEar(std::size_t v0, std::size_t v1, std::size_t v2) const;
inline void initVertexList();
inline void initLists();
inline void clipEars();
void addLastTriangle();
/**
* a copy of the polygon points
*/
std::vector<GeoLib::Point*> _pnts;
std::list<std::size_t> _vertex_list;
std::list<std::size_t> _convex_vertex_list;
std::list<std::size_t> _ear_list;
/**
* triangles of the triangulation (maybe in the wrong orientation)
*/
std::list<GeoLib::Triangle> _triangles;
GeoLib::Orientation _original_orientation;
};
} // end namespace GeoLib
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...