PGR Copakond OpenGL Engine - Bowling
Loading...
Searching...
No Matches
geometry.h
Go to the documentation of this file.
1#ifndef PGR_SEM_COPAKOND_GEOMETRY_H
2#define PGR_SEM_COPAKOND_GEOMETRY_H
3
4#include "../pgr-portable.h"
5#include <iostream>
6
7namespace copakond {
9 class Geometry {
10 protected:
11 Geometry *parent = nullptr;
12 std::vector<Geometry*> children;
13
14 glm::vec3 _position;
15 glm::vec3 _rotation;
16 glm::vec3 _scale;
17
18 public:
19 Geometry();
20 Geometry(const glm::vec3 &position);
21 Geometry(const glm::vec3 &position, const glm::vec3 &rotation);
22 Geometry(const glm::vec3 &position, const glm::vec3 &rotation, const glm::vec3 &scale);
23 virtual ~Geometry();
24
25 // getters and setters in one
26 virtual void setPosition(const glm::vec3& position) { _position = position; }
27 virtual void setRotation(const glm::vec3& rotation) { _rotation = rotation; }
28 virtual void setScale(const glm::vec3& scale) { _scale = scale; }
29 virtual void setRotationDegrees(const glm::vec3 &rotationDegrees) { _rotation = glm::radians(rotationDegrees); }
30
31 glm::mat4 getRotationXMatrix() const;
32 glm::mat4 getRotationYMatrix() const;
33 glm::mat4 getRotationZMatrix() const;
34
35 // local
36 glm::mat4 getPositionMatrix() const;
37 glm::mat4 getRotationMatrix() const;
38 glm::mat4 getScaleMatrix() const;
39
41 glm::mat4 getModelMatrix() const;
42
43 // world position
44 glm::mat4 getWorldPositionMatrix() const;
45 glm::mat4 getWorldRotationMatrix() const;
46 glm::mat4 getWorldScaleMatrix() const;
47
49 glm::mat4 getWorldModelMatrix() const; // used for shader (all matrixes of all ancestors multiplied)
50
51 glm::vec3 getPosition() const { return _position; }
52 glm::vec3 getRotation() const { return _rotation; }
53 glm::vec3 getScale() const { return _scale; }
54 glm::vec3 getRotationDegrees() const { return glm::degrees(_rotation); }
55
56 glm::vec3 getWorldPosition() const;
57 glm::vec3 getWorldRotation() const;
58 glm::vec3 getWorldScale() const;
59
60 glm::vec3& position() { return _position; }
61 glm::vec3& rotation() { return _rotation; }
62 glm::vec3& scale() { return _scale; }
63
64 glm::vec3 worldPosition() const;
65 glm::vec3 worldRotation() const;
66 glm::vec3 worldScale() const;
67
73 bool setParent(Geometry *newParent);
74 Geometry* getParent() const { return parent; }
75 std::vector<Geometry*> getChildren() const { return children; }
76 };
77}
78
79#endif //PGR_SEM_COPAKOND_GEOMETRY_H
Base class for all spatial objects, serving as a node in the scene graph.
Definition geometry.h:9
glm::mat4 getWorldPositionMatrix() const
Definition geometry.cpp:122
glm::mat4 getScaleMatrix() const
Definition geometry.cpp:87
glm::vec3 getPosition() const
Definition geometry.h:51
glm::vec3 getWorldPosition() const
Definition geometry.cpp:128
bool setParent(Geometry *newParent)
Attaches this object to a new parent in the scene graph.
Definition geometry.cpp:35
virtual ~Geometry()
Definition geometry.cpp:28
virtual void setPosition(const glm::vec3 &position)
Definition geometry.h:26
glm::mat4 getRotationZMatrix() const
Definition geometry.cpp:75
glm::mat4 getWorldModelMatrix() const
Calculates global transformation matrix by multiplying all ancestor matrices.
Definition geometry.cpp:97
glm::mat4 getPositionMatrix() const
Definition geometry.cpp:79
glm::vec3 _position
Definition geometry.h:14
glm::vec3 & rotation()
Definition geometry.h:61
glm::vec3 getRotation() const
Definition geometry.h:52
glm::mat4 getRotationMatrix() const
Definition geometry.cpp:83
virtual void setRotation(const glm::vec3 &rotation)
Definition geometry.h:27
Geometry * getParent() const
Definition geometry.h:74
glm::vec3 getWorldScale() const
Definition geometry.cpp:132
glm::mat4 getRotationXMatrix() const
Definition geometry.cpp:67
virtual void setRotationDegrees(const glm::vec3 &rotationDegrees)
Definition geometry.h:29
std::vector< Geometry * > children
Definition geometry.h:12
glm::vec3 getWorldRotation() const
Definition geometry.cpp:139
glm::vec3 _rotation
Definition geometry.h:15
Geometry()
Definition geometry.cpp:4
glm::vec3 getScale() const
Definition geometry.h:53
glm::mat4 getWorldScaleMatrix() const
Definition geometry.cpp:115
glm::mat4 getRotationYMatrix() const
Definition geometry.cpp:71
Geometry * parent
Definition geometry.h:11
glm::vec3 worldScale() const
Definition geometry.cpp:148
glm::vec3 worldRotation() const
Definition geometry.cpp:147
glm::vec3 & scale()
Definition geometry.h:62
glm::vec3 _scale
Definition geometry.h:16
glm::vec3 getRotationDegrees() const
Definition geometry.h:54
glm::mat4 getWorldRotationMatrix() const
Definition geometry.cpp:108
virtual void setScale(const glm::vec3 &scale)
Definition geometry.h:28
glm::vec3 & position()
Definition geometry.h:60
glm::vec3 worldPosition() const
Definition geometry.cpp:146
std::vector< Geometry * > getChildren() const
Definition geometry.h:75
glm::mat4 getModelMatrix() const
Calculates local transformation matrix.
Definition geometry.cpp:91
PGR Semestral work with sample scenes and bowling. doxygen was generated with a help of LLM.
Definition bezier.cpp:3