From af8dca469431664df65d965f48acbc9ea68d410c Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 25 Apr 2025 11:35:57 +0200 Subject: [PATCH] Flugkurve V4 --- flugkurve.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 flugkurve.cpp diff --git a/flugkurve.cpp b/flugkurve.cpp new file mode 100644 index 0000000..69b3c9e --- /dev/null +++ b/flugkurve.cpp @@ -0,0 +1,83 @@ +/** +* $Author: MahrTh $ +* $Rev: 118 $ +* $Date: 2015-03-21 21:39:51 +0100 (Sa, 21. Mär 2015) $ +*/ +#include +#include + +using namespace std; + +class Vektor { +public: + float x, y; + + void add(Vektor vektor) { + x += vektor.x; + y += vektor.y; + } + void mul(float faktor) { + x *= faktor; + y *= faktor; + } + string text(){ + stringstream ss; + ss << "(" << x << "," << y << ")"; + return ss.str(); + } +}; + +class Koerper{ +public: + Vektor position; + Vektor geschwindigkeit; + float masse; + + Koerper(Vektor position, Vektor geschwindigkeit, float masse) { + this->position = position; + this->geschwindigkeit = geschwindigkeit; + this->masse = masse; + } + Vektor lieferePosition() { + return position; + } + Vektor liefereGeschwindigkeit() { + return geschwindigkeit; + } + float liefereMasse() { + return masse; + } + void bewegen(Vektor beschleunigung, float dt) { + position.add({geschwindigkeit.x * dt, geschwindigkeit.y * dt}); + geschwindigkeit.add({beschleunigung.x * dt, beschleunigung.y * dt}); + } + string text() { + return position.text(); + } +}; + +int main() { + // Körper: + const float MASSE = 10; + const Vektor START_POSITION = {0,0}; + const Vektor START_GESCHWINDIGKEIT = {10,10}; + Koerper koerper = {START_POSITION,START_GESCHWINDIGKEIT,MASSE}; + // Parametrierung der auf den Körper wirkende Kräfte: + const Vektor BESCHLEUNIGUNG_GRAVITATION = {0,-9.81}; // [m/s^2] + const float REIBUNGSKOEFFIZIENT =-5; // [kg/s] + // Simulation: + const float dt = 0.1; + for(;;) { + cout << "Position des Koerpers: " << koerper.text() << endl; + // Bestimmung der neuen Beschleunigung + Vektor beschleunigung; + beschleunigung = koerper.liefereGeschwindigkeit(); + beschleunigung.mul(REIBUNGSKOEFFIZIENT/koerper.liefereMasse()); + beschleunigung.add(BESCHLEUNIGUNG_GRAVITATION); + // Ermittlung der neuen Position und neuen Geschwindigkeit + koerper.bewegen(beschleunigung,dt); + if(koerper.lieferePosition().y<=0) { + break; + } + } +}