77 lines
2.3 KiB
C++
77 lines
2.3 KiB
C++
#include <iostream>
|
|
#include <cmath>
|
|
#include <cassert>
|
|
#include "flugkurve01.h"
|
|
using namespace std;
|
|
|
|
void function_checks() {
|
|
// mulVektor
|
|
Vektor test_vec = {10, 11};
|
|
Vektor result = mulVektor(test_vec, -3);
|
|
assert(fabs(result.x + 30) < 0.1 && "Result must be -30");
|
|
assert(fabs(result.y + 33) < 0.1 && "Result must be -33");
|
|
cout << "mulVektor erfolgreich" << endl;
|
|
|
|
// addVektor
|
|
Vektor test_vec_2 = {-10, 31};
|
|
result = addVektor(test_vec, test_vec_2);
|
|
assert(fabs(result.x + 0) < 0.1 && "Result must be 0");
|
|
assert(fabs(result.y - 42) < 0.1 && "Result must be 42");
|
|
cout << "addVektor erfolgreich" << endl;
|
|
|
|
// bewegeKoerper
|
|
Koerper koerper;
|
|
koerper.masse = 10;
|
|
koerper.position = { 0, 0 };
|
|
koerper.geschwindigkeit = { 10, 10 };
|
|
Vektor bewegung = {1, -1};
|
|
koerper = bewegeKoerper(koerper, bewegung, 7);
|
|
assert(fabs(koerper.geschwindigkeit.x - 10.7) < 0.1 && "Result must be 10.7");
|
|
assert(fabs(koerper.geschwindigkeit.y - 9.3) < 0.1 && "Result must be 9.3");
|
|
assert(fabs(koerper.position.x - 74.9) < 0.1 && "Result must be 74.9");
|
|
assert(fabs(koerper.position.y - 65.1) < 0.1 && "Result must be 65.1");
|
|
cout << "bewegeKoerper erfolgreich" << endl;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
cout << "Funktionsüberprüfung" << endl;
|
|
|
|
// Function checks
|
|
function_checks();
|
|
|
|
// Check whole program
|
|
cout << "Simulation" << endl;
|
|
Koerper koerper;
|
|
koerper.masse = 10;
|
|
koerper.position = { 0, 0 };
|
|
koerper.geschwindigkeit = { 10, 10 };
|
|
// 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]
|
|
// Sorgt dafür, dass 2 Nachkommastellen angezeigt werden:
|
|
cout << fixed;
|
|
cout.precision(2);
|
|
// Simulation:
|
|
const float dt = 0.1;
|
|
for(;;)
|
|
{
|
|
cout << "Position des Körpers: ";
|
|
ausgabeKoerper(koerper);
|
|
cout << endl;
|
|
// Bestimmung der Kraft
|
|
Vektor reibungskraft = mulVektor(koerper.geschwindigkeit,
|
|
REIBUNGSKOEFFIZIENT);
|
|
Vektor anziehungskraft = mulVektor(BESCHLEUNIGUNG_GRAVITATION,
|
|
koerper.masse);
|
|
Vektor gesamtkraft = addVektor(reibungskraft,anziehungskraft);
|
|
// Ermittlung der neuen Position und neuen Geschwindigkeit
|
|
koerper = bewegeKoerper(koerper,gesamtkraft,dt);
|
|
if(koerper.position.y<=0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|