22 #ifndef GLCATMULLROMCURVE_H_
23 #define GLCATMULLROMCURVE_H_
27 #include <tulip/AbstractGlCurve.h>
44 enum ParameterizationType {UNIFORM, CHORD_LENGTH, CENTRIPETAL};
62 GlCatmullRomCurve(
const std::vector<Coord> &controlPoints,
const Color &startColor,
const Color &endColor,
63 const float startSize,
const float endSize,
const bool closedCurve =
false,
64 const unsigned int nbCurvePoints = 200,
const ParameterizationType paramType = CENTRIPETAL);
68 void setParameterizationType(
const ParameterizationType paramType) {
69 this->paramType = paramType;
72 void drawCurve(std::vector<Coord> &controlPoints,
const Color &startColor,
const Color &endColor,
const float startSize,
const float endSize,
const unsigned int nbCurvePoints=200);
74 void setClosedCurve(
const bool closedCurve) {
75 this->closedCurve = closedCurve;
80 void setCurveVertexShaderRenderingSpecificParameters();
82 Coord computeCurvePointOnCPU(
const std::vector<Coord> &controlPoints,
float t);
84 void computeCurvePointsOnCPU(
const std::vector<Coord> &controlPoints, std::vector<Coord> &curvePoints,
unsigned int nbCurvePoints);
91 ParameterizationType paramType;
A class to draw a Catmull-Rom curve.