

// eval_bezier.hpp - evaluate various Bezier positions and gradients

#ifndef __eval_bezier_hpp__
#define __eval_bezier_hpp__

#include <Cg/double.hpp>
#include <Cg/vector/xyzw.hpp>
#include <Cg/matrix/1based.hpp>
#include <Cg/matrix/rows.hpp>
#include <Cg/vector.hpp>
#include <Cg/matrix.hpp>

using namespace Cg;

float3 evalRationalBezierCubic(const float3 cp[4], float t);
double3 evalRationalBezierCubic(const float3 cp[4], double t);
float3 evalRationalBezierQuadratic(const float3 cp[3], float t);
double3 evalRationalBezierQuadratic(const float3 cp[3], double t);
float3 evalRationalBezierCubicGradient(const double x[4], const double y[4], const double w[4], double t);
float3 evalRationalBezierCubicGradient(const float3 cp[4], double t);
float3 evalRationalBezierQuadraticGradient(const float3 cp[3], double t);
float3 evalRationalBezierQuadraticSecondGradient(const float3 cp[3], double t);
float3 evalRationalBezierCubicSecondGradient(const float3 cp[4], double t);

#endif // __eval_bezier_hpp__