PGR Copakond OpenGL Engine - Bowling
Loading...
Searching...
No Matches
spline.h
Go to the documentation of this file.
1#ifndef PGR_SEM_COPAKOND_SPLINE_H
2#define PGR_SEM_COPAKOND_SPLINE_H
3#include <functional>
4#include <vector>
5#include "../pgr-portable.h"
6
7namespace copakond {
9 class Spline {
10 protected:
11 float t = 0.0f;
12 float duration;
13 size_t pointsCount;
15 bool paused = false;
16
17 bool hasFunctionVector = false;
19 std::function<void(glm::vec3)> applyVector;
20 std::function<void(glm::vec3)> applyVectorDerivative;
21
22 std::vector<glm::vec3> points;
23 glm::vec3 &vector;
24 glm::vec3 &vectorDerivative;
25
26 glm::vec3 _P0;
27 glm::vec3 _P1;
28 glm::vec3 _P2;
29 glm::vec3 _P3;
30
31 virtual glm::vec3 evaluateNormal(float localT) = 0; // = 0 no body implementation
32 virtual glm::vec3 evaluateDerivative(float localT) = 0;
33 public:
34 virtual ~Spline() = default;
35
36 Spline(float duration, std::vector<glm::vec3> &points, glm::vec3 &vector);
37 Spline(float duration, std::vector<glm::vec3> &points, std::function<void(glm::vec3)> applyVector);
38
39 Spline(float duration, std::vector<glm::vec3> &points, glm::vec3 &vector, glm::vec3 &vectorDerivative);
40 Spline(float duration, std::vector<glm::vec3> &points, std::function<void(glm::vec3)> applyVector, glm::vec3 &vectorDerivative);
41 Spline(float duration, std::vector<glm::vec3> &points, glm::vec3 &vector, std::function<void(glm::vec3)> applyVectorDerivative);
42 Spline(float duration, std::vector<glm::vec3> &points, std::function<void(glm::vec3)> applyVector, std::function<void(glm::vec3)> applyVectorDerivative);
43
48 void update(float deltaTime);
49 void pause() { paused = true; }
50 void unpause() { paused = false; }
51 void reset() { t = 0.0f; }
52 };
53}
54
55#endif //PGR_SEM_COPAKOND_SPLINE_H
void unpause()
Definition spline.h:50
glm::vec3 & vector
Definition spline.h:23
bool hasDerivative
Definition spline.h:14
Spline(float duration, std::vector< glm::vec3 > &points, glm::vec3 &vector)
Definition spline.cpp:4
std::function< void(glm::vec3)> applyVector
Definition spline.h:19
glm::vec3 & vectorDerivative
Definition spline.h:24
virtual ~Spline()=default
bool hasFunctionVectorDerivative
Definition spline.h:18
glm::vec3 _P2
Definition spline.h:28
virtual glm::vec3 evaluateDerivative(float localT)=0
void update(float deltaTime)
Updates spline state and calculates new vectors based on time.
Definition spline.cpp:64
std::vector< glm::vec3 > points
Definition spline.h:22
float t
Definition spline.h:11
virtual glm::vec3 evaluateNormal(float localT)=0
bool paused
Definition spline.h:15
glm::vec3 _P3
Definition spline.h:29
glm::vec3 _P0
Definition spline.h:26
bool hasFunctionVector
Definition spline.h:17
size_t pointsCount
Definition spline.h:13
void pause()
Definition spline.h:49
float duration
Definition spline.h:12
std::function< void(glm::vec3)> applyVectorDerivative
Definition spline.h:20
glm::vec3 _P1
Definition spline.h:27
void reset()
Definition spline.h:51
PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM.
Definition bezier.cpp:3