From a5ff616e86beb916b3775409f4dab93f8204c529 Mon Sep 17 00:00:00 2001 From: Cat Flynn Date: Sun, 18 Aug 2024 14:12:08 +0100 Subject: [PATCH] refactor: move orbiter->particle --- CMakeLists.txt | 3 +-- lib/skein/CMakeLists.txt | 1 + .../skein/include/skein/particle.h | 6 ++--- lib/skein/src/particle.cpp | 7 ++++++ src/main.cpp | 12 +++++----- src/orbiter.cpp | 7 ------ src/orbitervisualizer.cpp | 23 ------------------- src/orbitervisualizer.hpp | 21 ----------------- src/particlevisualizer.cpp | 23 +++++++++++++++++++ src/particlevisualizer.hpp | 22 ++++++++++++++++++ 10 files changed, 63 insertions(+), 62 deletions(-) rename src/orbiter.hpp => lib/skein/include/skein/particle.h (60%) create mode 100644 lib/skein/src/particle.cpp delete mode 100644 src/orbiter.cpp delete mode 100644 src/orbitervisualizer.cpp delete mode 100644 src/orbitervisualizer.hpp create mode 100644 src/particlevisualizer.cpp create mode 100644 src/particlevisualizer.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 9770e78..079efbf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,8 +32,7 @@ add_executable(${PROJECT_NAME} src/icosphere.cpp src/gfx.cpp src/orbitvisualizer.cpp - src/orbitervisualizer.cpp - src/orbiter.cpp + src/particlevisualizer.cpp src/widget.cpp ) diff --git a/lib/skein/CMakeLists.txt b/lib/skein/CMakeLists.txt index 072945c..5b5858a 100644 --- a/lib/skein/CMakeLists.txt +++ b/lib/skein/CMakeLists.txt @@ -3,6 +3,7 @@ project(skein) add_library(skein STATIC src/orbit.cpp + src/particle.cpp ) target_include_directories(skein PUBLIC diff --git a/src/orbiter.hpp b/lib/skein/include/skein/particle.h similarity index 60% rename from src/orbiter.hpp rename to lib/skein/include/skein/particle.h index e4e622b..3d2d72b 100644 --- a/src/orbiter.hpp +++ b/lib/skein/include/skein/particle.h @@ -2,11 +2,11 @@ #include -class Orbiter +class Particle { public: - Orbiter() = default; - ~Orbiter() = default; + Particle() = default; + ~Particle() = default; Orbit& getOrbit(); diff --git a/lib/skein/src/particle.cpp b/lib/skein/src/particle.cpp new file mode 100644 index 0000000..36e7c87 --- /dev/null +++ b/lib/skein/src/particle.cpp @@ -0,0 +1,7 @@ +#include "skein/particle.h" + +Orbit& Particle::getOrbit() +{ + return _orbit; +} + diff --git a/src/main.cpp b/src/main.cpp index 3daaa1a..6f33f09 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -41,12 +41,12 @@ #include "gfx.hpp" #include "icosphere.hpp" -#include "orbiter.hpp" -#include "orbitervisualizer.hpp" +#include "particlevisualizer.hpp" #include "orbitvisualizer.hpp" #include "widget.hpp" #include +#include // INPUT! // @@ -95,15 +95,15 @@ int main() // set up scene Icosphere planet(0.2, 3, litProgram); - Orbiter orbiter; - Orbit& orbit = orbiter.getOrbit(); + Particle particle; + Orbit& orbit = particle.getOrbit(); orbit.setSemiMajorAxis(.75); orbit.setEccentricity(.5); orbit.setInclination(3.142 / 2.0 + 1); orbit.setArgumentOfPeriapsis(2.0); orbit.setLongitudeOfAscendingNode(0.1); - OrbiterVisualizer orbiterVisualizer(orbiter, litProgram, unlitProgram); + ParticleVisualizer particleVisualizer(particle, litProgram, unlitProgram); OrbitVisualizer orbitVisualizer(orbit, unlitProgram); // register input @@ -149,7 +149,7 @@ int main() glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); planet.render(time); - orbiterVisualizer.render(time); + particleVisualizer.render(time); orbitVisualizer.render(time); glfwSwapBuffers(window); diff --git a/src/orbiter.cpp b/src/orbiter.cpp deleted file mode 100644 index f155377..0000000 --- a/src/orbiter.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "orbiter.hpp" - -Orbit& Orbiter::getOrbit() -{ - return _orbit; -} - diff --git a/src/orbitervisualizer.cpp b/src/orbitervisualizer.cpp deleted file mode 100644 index 025a99d..0000000 --- a/src/orbitervisualizer.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "orbitervisualizer.hpp" - -OrbiterVisualizer::OrbiterVisualizer(Orbiter& orbiter, GLuint sphereShaderProgram, GLuint widgetShaderProgram) - : _orbiter(orbiter), _sphere({0.07, 2, sphereShaderProgram}), _widget(widgetShaderProgram) -{ -} - -void OrbiterVisualizer::render(float time) -{ - const Orbit& orbit = _orbiter.getOrbit(); - - const float meanAnomaly = time; - glm::vec3 pos = orbit.getPosition(meanAnomaly); - - // render widget - glm::mat4 widgetMatrix = orbit.getLookAlongMatrix(time); - _widget.setModelMatrix(widgetMatrix); - _widget.render(time); - - // render sphere - _sphere.setPosition(pos); - _sphere.render(time); -} diff --git a/src/orbitervisualizer.hpp b/src/orbitervisualizer.hpp deleted file mode 100644 index 32d6a46..0000000 --- a/src/orbitervisualizer.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include "widget.hpp" -#include "icosphere.hpp" -#include "orbiter.hpp" - -class OrbiterVisualizer -{ - public: - OrbiterVisualizer(Orbiter& orbiter, GLuint sphereShaderProgram, GLuint widgetShaderProgram); - ~OrbiterVisualizer() = default; - - void render(float time); - - private: - void updateModelMatrix(); - - Orbiter& _orbiter; - Icosphere _sphere; - Widget _widget; -}; diff --git a/src/particlevisualizer.cpp b/src/particlevisualizer.cpp new file mode 100644 index 0000000..117bddf --- /dev/null +++ b/src/particlevisualizer.cpp @@ -0,0 +1,23 @@ +#include "particlevisualizer.hpp" + +ParticleVisualizer::ParticleVisualizer(Particle& particle, GLuint sphereShaderProgram, GLuint widgetShaderProgram) + : _particle(particle), _sphere({0.07, 2, sphereShaderProgram}), _widget(widgetShaderProgram) +{ +} + +void ParticleVisualizer::render(float time) +{ + const Orbit& orbit = _particle.getOrbit(); + + const float meanAnomaly = time; + glm::vec3 pos = orbit.getPosition(meanAnomaly); + + // render widget + glm::mat4 widgetMatrix = orbit.getLookAlongMatrix(time); + _widget.setModelMatrix(widgetMatrix); + _widget.render(time); + + // render sphere + _sphere.setPosition(pos); + _sphere.render(time); +} diff --git a/src/particlevisualizer.hpp b/src/particlevisualizer.hpp new file mode 100644 index 0000000..2a7b9b0 --- /dev/null +++ b/src/particlevisualizer.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "widget.hpp" +#include "icosphere.hpp" + +#include + +class ParticleVisualizer +{ + public: + ParticleVisualizer(Particle& particle, GLuint sphereShaderProgram, GLuint widgetShaderProgram); + ~ParticleVisualizer() = default; + + void render(float time); + + private: + void updateModelMatrix(); + + Particle& _particle; + Icosphere _sphere; + Widget _widget; +};