#pragma once #include "./Curve.hpp" enum class NURBSType { BASIC, CLAMPED, CYCLIC }; class NURBS : public Curve { private: unsigned int order; vector* weights; vector* multiplicities; vector* derivativeBoundaries; vector* derivativePoints; vector* derivativeWeghts; glm::vec3 deBoor( float at, int index); void preliminaryChecks(); public: NURBS( unsigned int order, vector* points, vector* weights, vector* boundaries, vector* multiplicities); unsigned int getOrder(); vector* getWeights(); glm::vec3 evaluate(float at); glm::vec3 derivate(float at); float getLeftBound(); float getRightBound(); };