inital commit. Set up all the exercises
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
#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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
// Körper:
|
||||
float masse = 10; // [kg]
|
||||
float xPosition = 0; // [m]
|
||||
float yPosition = 0; // [m]
|
||||
float xGeschwindigkeit = 10; // [m/s]
|
||||
float yGeschwindigkeit = 10; // [m/s]
|
||||
|
||||
// Parametrierung der auf den Körper wirkende Kräfte:
|
||||
const float X_BESCHLEUNIGUNG_GRAVITATION = 0; // [m/s^2]
|
||||
const float Y_BESCHLEUNIGUNG_GRAVITATION = -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; // [s]
|
||||
for(;;)
|
||||
{
|
||||
cout << "(" << xPosition << "," << yPosition << ")" << endl;
|
||||
|
||||
// Berechnung der Beschleunigung aus der Kraft
|
||||
float xBeschleunigung = xGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + X_BESCHLEUNIGUNG_GRAVITATION;
|
||||
float yBeschleunigung = yGeschwindigkeit * REIBUNGSKOEFFIZIENT / masse + Y_BESCHLEUNIGUNG_GRAVITATION;
|
||||
|
||||
// Ermittlung der neuen Geschwindigkeit
|
||||
xGeschwindigkeit += dt * xBeschleunigung;
|
||||
yGeschwindigkeit += dt * yBeschleunigung;
|
||||
|
||||
// Ermittlung der neuen Position
|
||||
xPosition += dt * xGeschwindigkeit;
|
||||
yPosition += dt * yGeschwindigkeit;
|
||||
|
||||
if(yPosition<=0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user