BSpline class
This commit is contained in:
parent
9d90a00e8e
commit
08e3667ffb
50
src/bspline.cpp
Normal file
50
src/bspline.cpp
Normal file
|
@ -0,0 +1,50 @@
|
|||
#include "bspline.h"
|
||||
|
||||
BSpline::BSpline(int k, double step, int np1)
|
||||
{
|
||||
// Initialisation des valeurs
|
||||
// Ordre k = 2
|
||||
_k = k;
|
||||
_step = step;
|
||||
_np1 = np1;
|
||||
// Vecteur Nodal Uniforme de np1 valeurs
|
||||
for(int i = 0; i < k+np1; ++i)
|
||||
_vecteurNodal.push_back(i);
|
||||
// Points de contrôle
|
||||
_pointsDeControle.push_back(glm::vec3(-3, 0, 0));
|
||||
_pointsDeControle.push_back(glm::vec3(-1, 0, 0));
|
||||
_pointsDeControle.push_back(glm::vec3(-1, 0, 2));
|
||||
_pointsDeControle.push_back(glm::vec3( 1, 0, 2));
|
||||
_pointsDeControle.push_back(glm::vec3( 1, 0, 0));
|
||||
_pointsDeControle.push_back(glm::vec3( 3, 0, 0));
|
||||
|
||||
computeSpline();
|
||||
}
|
||||
|
||||
void BSpline::computeSpline()
|
||||
{
|
||||
// Init
|
||||
int dec = 0, i = _k;
|
||||
double u = 0;
|
||||
|
||||
std::vector<glm::vec3> vecteursPointsControle (_np1);
|
||||
|
||||
for(u = _k - 1; u < _np1; u += _step){
|
||||
while(u > _vecteurNodal[i]){
|
||||
++dec;
|
||||
++i;
|
||||
}
|
||||
|
||||
for(int i = 0; i < _k; i++){
|
||||
vecteursPointsControle[i] = _pointsDeControle[dec + i];
|
||||
}
|
||||
|
||||
std::vector<GLfloat> newVertices = floraison(u, dec, _k);
|
||||
_vertices.insert(_vertices.end(), newVertices.begin(), newVertices.end());
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<GLfloat> BSpline::floraison(double u, int dec, int k)
|
||||
{
|
||||
return std::vector<GLfloat>({0.0f, 0.0f, 0.0f});
|
||||
}
|
26
src/bspline.h
Normal file
26
src/bspline.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#ifndef BSPLINE_H
|
||||
#define BSPLINE_H
|
||||
|
||||
#include "opengl_stuff.h"
|
||||
#include <vector>
|
||||
|
||||
|
||||
class BSpline
|
||||
{
|
||||
public:
|
||||
BSpline(int k = 2, double step = 0.1, int np1 = 6);
|
||||
|
||||
private:
|
||||
std::vector<double> _vecteurNodal;
|
||||
std::vector<glm::vec3> _pointsDeControle;
|
||||
int _k;
|
||||
int _np1;
|
||||
double _step;
|
||||
|
||||
std::vector<GLfloat> _vertices;
|
||||
|
||||
void computeSpline();
|
||||
std::vector<GLfloat> floraison(double u, int dec, int k);
|
||||
};
|
||||
|
||||
#endif // BSPLINE_H
|
Loading…
Reference in New Issue
Block a user