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