Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+94
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
**
|
||||
** @RDE_HEADER@
|
||||
** Rasterize functional path geometries to polylines
|
||||
** $Id$
|
||||
** $HeadURL$
|
||||
** $Author$
|
||||
**
|
||||
** -----------------------------------------------------------------------------------------------
|
||||
**
|
||||
** Hardware-Environment: Intel-PC
|
||||
** Software-Environment: Windows 7, Qt 5.4. ArcGIS 10.2.5
|
||||
**
|
||||
** Language ........: C++ 11
|
||||
**
|
||||
** -----------------------------------------------------------------------------------------------
|
||||
**
|
||||
** Author ...........: Jörg Turla, SPD G, Tel. 3132
|
||||
**
|
||||
** -----------------------------------------------------------------------------------------------
|
||||
**
|
||||
** Notes .........:
|
||||
**
|
||||
** 12.08.2015, JT : First edition for use with Qt5
|
||||
**
|
||||
** -----------------------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include <QtCore/QPoint>
|
||||
#include <QtCore/QVector>
|
||||
#include <QtCore/QList>
|
||||
#include <situation_map_export.h>
|
||||
|
||||
namespace SituationMap { namespace MathUtils
|
||||
{
|
||||
|
||||
/**
|
||||
@class PathRasterer path_rasterer.h
|
||||
@brief Base class to rasterize parametric functions, like splines
|
||||
|
||||
Base class to rasterize parametric functions, like splines, with an interval halving method
|
||||
to approximate the function by a discrete polyline.
|
||||
|
||||
@see Ellipse, Spline, SmoothLine, HermiteSpline, BezierSpline
|
||||
*/
|
||||
class SITUATIONMAP_EXPORT PathRasterer
|
||||
{
|
||||
public:
|
||||
|
||||
PathRasterer();
|
||||
virtual ~PathRasterer() = default;
|
||||
|
||||
/**
|
||||
Defines a threshold values to decide ending convergence
|
||||
*/
|
||||
inline void epsilon( qreal eps ) { _eps = eps; }
|
||||
|
||||
/**
|
||||
Defines the maximum of calculated verticies if \c epsilon doesn't terminate the convergence operation
|
||||
*/
|
||||
inline void maxVertexCount(unsigned int max) { _maxVertexCount = max; }
|
||||
|
||||
/**
|
||||
Method to override to define the parametric function
|
||||
*/
|
||||
virtual void function( qreal t, QPointF & result ) = 0;
|
||||
|
||||
/**
|
||||
Creating a vertex vector with an interval halving method to approximate a parametric function by a polyline
|
||||
*/
|
||||
void rasterize(qreal tMin, qreal tMax, QVector<QPointF> & vertexList);
|
||||
|
||||
void rasterize(qreal tMin, qreal tMax, QList<QPointF> & vertexList);
|
||||
|
||||
protected:
|
||||
|
||||
qreal _eps;
|
||||
unsigned int _maxVertexCount;
|
||||
|
||||
template<class List> void exeRasterize( qreal tMin, qreal tMax, List & vertexList );
|
||||
|
||||
template<class List> void splitSegment( const QPointF & v0
|
||||
, qreal t0
|
||||
, const QPointF & v1
|
||||
, qreal t1
|
||||
, unsigned int maxVertexCount
|
||||
, List & vertexList );
|
||||
|
||||
}; /* PathRasterer */
|
||||
|
||||
} } // namespace SituationMap::MathUtils
|
||||
Reference in new issue
Block a user