#include #include #include #include "flugkurve03.h" using namespace std; void function_checks() { // Vektor init Vektor test_vec = {10, 11}; assert(fabs(test_vec.x - 10) < 0.1 && "x must be 10"); assert(fabs(test_vec.y - 11) < 0.1 && "x must be 11"); cout << "Vektor init erfolgreich" << endl; // Vektor mul test_vec.mul(2.0); assert(fabs(test_vec.x - 20) < 0.1 && "x must be 20"); assert(fabs(test_vec.y - 22) < 0.1 && "x must be 22"); cout << "Vektor mul erfolgreich" << endl; // Vektor add Vektor test_vec_2 = {1, 2}; test_vec.add(test_vec_2); assert(fabs(test_vec.x - 21) < 0.1 && "x must be 21"); assert(fabs(test_vec.y - 24) < 0.1 && "x must be 24"); cout << "Vektor add erfolgreich" << endl; // Koerper init + getter float masse = 10; Vektor position = {2, 3}; Vektor geschwindigkeit = {10, 11}; Koerper koerper = {masse, position, geschwindigkeit}; assert(fabs(koerper.liefereMasse() - 10) < 0.1 && "Mass must be 10"); assert(fabs(koerper.lieferePosition().x - 2) < 0.1 && "Position: x must be 2"); assert(fabs(koerper.lieferePosition().y - 3) < 0.1 && "Position: y must be 3"); assert(fabs(koerper.liefereGeschwindigkeit().x - 10) < 0.1 && "Velocity: x must be 10"); assert(fabs(koerper.liefereGeschwindigkeit().y - 11) < 0.1 && "Velocity: y must be 11"); cout << "Koerper init + getter erfolgreich" << endl; // Koerper bewegen Vektor beschleunigung = {-2, -9}; float dt = 0.1; koerper.bewegen(beschleunigung, dt); assert(fabs(koerper.liefereMasse() - 10) < 0.1 && "Mass must be 10"); assert(fabs(koerper.lieferePosition().x - 2.98) < 0.1 && "Position: x must be 2.98"); assert(fabs(koerper.lieferePosition().y - 4.01) < 0.1 && "Position: y must be 4.01"); assert(fabs(koerper.liefereGeschwindigkeit().x - 9.8) < 0.1 && "Velocity: x must be 9.8"); assert(fabs(koerper.liefereGeschwindigkeit().y - 10.1) < 0.1 && "Velocity: y must be 10.1"); cout << "Koerper bewegen erfolgreich" << endl; } int main() { cout << "Funktionsüberprüfung" << endl; // Function checks function_checks(); // Check whole program cout << "Simulation" << endl; // Körper: const float MASSE = 10; const Vektor START_POSITION = {0,0}; const Vektor START_GESCHWINDIGKEIT = {10,10}; Koerper koerper(MASSE,START_POSITION,START_GESCHWINDIGKEIT); // 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 Körpers: " << 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; } } }