Physics Simulation & Visualization Tool 0.1
A C++ physics simulation engine with real-time 3D visualization
Loading...
Searching...
No Matches
Metric.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <QString>
5#include <QObject>
6
8
9enum class Metric {
17
18 Count, // Must be last (just dont have to hard code the count elsewhere)
19};
20
21inline constexpr std::size_t kPlottableMetricCount = static_cast<std::size_t>(Metric::Count);
22
23inline QString metricLabel(Metric metric) {
24 switch (metric) {
25 case Metric::PositionX: return QObject::tr("Position X");
26 case Metric::PositionY: return QObject::tr("Position Y");
27 case Metric::PositionZ: return QObject::tr("Position Z");
28 case Metric::VelocityX: return QObject::tr("Velocity X");
29 case Metric::VelocityY: return QObject::tr("Velocity Y");
30 case Metric::VelocityZ: return QObject::tr("Velocity Z");
31 case Metric::Temperature: return QObject::tr("Temperature (K)");
32 case Metric::Count: return QObject::tr("Invalid Metric");
33 }
34 return QObject::tr("Unknown Metric");
35}
36
37inline float objectSnapshotValue(Metric metric, const ObjectSnapshot& s) {
38 switch (metric) {
39 case Metric::PositionX: return s.position.x;
40 case Metric::PositionY: return s.position.y;
41 case Metric::PositionZ: return s.position.z;
42 case Metric::VelocityX: return s.velocity.x;
43 case Metric::VelocityY: return s.velocity.y;
44 case Metric::VelocityZ: return s.velocity.z;
45 case Metric::Temperature: return s.temperature;
46 case Metric::Count: return 0.0f;
47 }
48 return 0.0f;
49}
constexpr std::size_t kPlottableMetricCount
Definition Metric.h:21
QString metricLabel(Metric metric)
Definition Metric.h:23
Metric
Definition Metric.h:9
@ Temperature
float objectSnapshotValue(Metric metric, const ObjectSnapshot &s)
Definition Metric.h:37
glm::vec3 velocity
Definition PhysicsBody.h:38
glm::vec3 position
Definition PhysicsBody.h:37