Overview | Modules | Class Hierarchy | Classes | Members

# tlp::GlCatmullRomCurve Class Reference

`#include <GlCatmullRomCurve.h>`

Inherits tlp::AbstractGlCurve.

Inheritance diagram for tlp::GlCatmullRomCurve:

[legend]
Collaboration diagram for tlp::GlCatmullRomCurve:

[legend]
List of all members.

## Detailed Description

A class to draw a Catmull-Rom curve.

This class allow to draw a Catmull-Rom curve, a smooth curve which passes through all its control points. Catmull-Rom splines are a family of cubic interpolating splines formulated such that the tangent at each control point is calculated using the previous and next control point point of the spline. Catmull-Rom splines have C^1 continuity, local control, and interpolation, but do not lie within the convex hull of their control points.

## Public Member Functions

- GlCatmullRomCurve ()
- GlCatmullRomCurve (const std::vector< Coord > &controlPoints, const Color &startColor, const Color &endColor, const float startSize, const float endSize, const bool closedCurve=false, const unsigned int nbCurvePoints=200, const ParameterizationType paramType=CENTRIPETAL)
- ~GlCatmullRomCurve ()
- void setParameterizationType (const ParameterizationType paramType)
- void drawCurve (std::vector< Coord > &controlPoints, const Color &startColor, const Color &endColor, const float startSize, const float endSize, const unsigned int nbCurvePoints=200)
- void setClosedCurve (const bool closedCurve)

## Protected Member Functions

- void setCurveVertexShaderRenderingSpecificParameters ()
- Coord computeCurvePointOnCPU (const std::vector< Coord > &controlPoints, float t)
- void computeCurvePointsOnCPU (const std::vector< Coord > &controlPoints, std::vector< Coord > &curvePoints, unsigned int nbCurvePoints)

## Constructor & Destructor Documentation

tlp::GlCatmullRomCurve::GlCatmullRomCurve | ( |  | ) |

tlp::GlCatmullRomCurve::GlCatmullRomCurve | ( | const std::vector< Coord > & | controlPoints,
|  | const Color & | startColor,
|  | const Color & | endColor,
|  | const float | startSize,
|  | const float | endSize,
|  | const bool | closedCurve = `false`,
|  | const unsigned int | nbCurvePoints = `200`,
|  | const ParameterizationType | paramType = `CENTRIPETAL`
| ) |

GlCatmullRomCurve constructor

Parameters:

  | controlPoints | a vector of control points (size must be greater or equal to 4)
  | startColor | the color at the start of the curve
  | endColor | the color at the end of the curve
  | startSize | the width at the start of the curve
  | endSize | the width at the end of the curve
  | closedCurve | if true, the curve will be closed and a bezier segment will be drawn between the last and first control point
  | paramType | curve parameterization type (GlCatmullRomCurve::UNIFORM | GlCatmullRomCurve::CENTRIPETAL | GlCatmullRomCurve::CHORD_LENGTH (default))
  | nbCurvePoints | the number of curve points to generate

tlp::GlCatmullRomCurve::~GlCatmullRomCurve | ( |  | ) |

## Member Function Documentation

Coord tlp::GlCatmullRomCurve::computeCurvePointOnCPU | ( | const std::vector< Coord > & | controlPoints,
|  | float | t
| ) | `[protected, virtual]`

| Implements tlp::AbstractGlCurve.

void tlp::GlCatmullRomCurve::computeCurvePointsOnCPU | ( | const std::vector< Coord > & | controlPoints,
|  | std::vector< Coord > & | curvePoints,
|  | unsigned int | nbCurvePoints
| ) | `[protected, virtual]`

| Implements tlp::AbstractGlCurve.

void tlp::GlCatmullRomCurve::drawCurve | ( | std::vector< Coord > & | controlPoints,
|  | const Color & | startColor,
|  | const Color & | endColor,
|  | const float | startSize,
|  | const float | endSize,
|  | const unsigned int | nbCurvePoints = `200`
| ) | `[virtual]`

| Reimplemented from tlp::AbstractGlCurve.

void tlp::GlCatmullRomCurve::setClosedCurve | ( | const bool | closedCurve | ) | `[inline]`

void tlp::GlCatmullRomCurve::setCurveVertexShaderRenderingSpecificParameters | ( |  | ) | `[protected, virtual]`

| Reimplemented from tlp::AbstractGlCurve.

void tlp::GlCatmullRomCurve::setParameterizationType | ( | const ParameterizationType | paramType | ) | `[inline]`

Tulip Software by LaBRI Visualization Team 2001 - 2010