summaryrefslogtreecommitdiff
path: root/wave-sim/src/simulation.h
diff options
context:
space:
mode:
authorSebastian Park <SebPark03@gmail.com>2024-04-10 02:51:43 -0400
committerSebastian Park <SebPark03@gmail.com>2024-04-10 02:51:43 -0400
commit0b0629450e2553b2f890094290528b565d607e38 (patch)
tree16d34a6123f3e50153b5fcd6466de5057cc960a0 /wave-sim/src/simulation.h
parentad313dcf57437ec0d40dddbce622a11c2bc2bc23 (diff)
parent47cd8a592ecad52c1b01f27d23476c0a5afeb7f1 (diff)
Merge branch 'shaders'
Diffstat (limited to 'wave-sim/src/simulation.h')
-rw-r--r--wave-sim/src/simulation.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/wave-sim/src/simulation.h b/wave-sim/src/simulation.h
new file mode 100644
index 0000000..68f2178
--- /dev/null
+++ b/wave-sim/src/simulation.h
@@ -0,0 +1,42 @@
+#pragma once
+
+#include "graphics/shape.h"
+#include "system.h"
+
+class Shader;
+
+class Simulation
+{
+public:
+ Simulation();
+
+ void init();
+
+ void update(double seconds);
+
+ void draw(Shader *shader);
+
+ void toggleWire();
+
+ void toggleForceRender();
+
+ Eigen::Vector3d calculateFaceNormal(Eigen::Vector3d a, Eigen::Vector3d b, Eigen::Vector3d c);
+
+ bool calculatePointBehindNormal(Eigen::Vector3d a, Eigen::Vector3d b, Eigen::Vector3d c, Eigen::Vector3d p);
+
+ System mainSystem;
+
+ enum EstimationMode { EULER, MIDPOINT, ADAPTIVE };
+
+private:
+ Shape m_shape;
+
+ Shape m_ground;
+
+ Shape m_extra;
+
+ EstimationMode estimationMode = MIDPOINT;
+
+ void initGround();
+ void initExtra();
+};