initial commit

This commit is contained in:
2026-04-09 15:03:00 +02:00
commit c978250c80
44 changed files with 1277 additions and 0 deletions
Binary file not shown.
+76
View File
@@ -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;
}
}
}
+46
View File
@@ -0,0 +1,46 @@
#include <iostream>
#include "flugkurve01.h"
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;
}
}
}
+19
View File
@@ -0,0 +1,19 @@
#ifndef FLUGKURVE01_H
#define FLUGKURVE01_H
struct Vektor{
float x;
float y;
};
struct Koerper{
float masse;
Vektor position;
Vektor geschwindigkeit;
};
Vektor mulVektor(Vektor vektor, int mul);
Vektor addVektor(Vektor vektor1, Vektor vektor2);
Koerper bewegeKoerper(Koerper koerper, Vektor bewegung, float dt);
void ausgabeKoerper(Koerper koerper);
#endif
+40
View File
@@ -0,0 +1,40 @@
#include <iostream>
#include "flugkurve01.h"
using namespace std;
Vektor mulVektor(Vektor vektor, int mul)
{
vektor.x *= mul;
vektor.y *= mul;
return vektor;
}
Vektor addVektor(Vektor vektor1, Vektor vektor2)
{
Vektor result;
result.x = vektor1.x + vektor2.x;
result.y = vektor1.y + vektor2.y;
return result;
}
Koerper bewegeKoerper(Koerper koerper, Vektor gesamtkraft, float dt)
{
// Beschleunigung = bewegung / masse
koerper.geschwindigkeit.x += dt * gesamtkraft.x / koerper.masse;
koerper.geschwindigkeit.y += dt * gesamtkraft.y / koerper.masse;
// Neue Position
koerper.position.x += dt * koerper.geschwindigkeit.x;
koerper.position.y += dt * koerper.geschwindigkeit.y;
return koerper;
}
void ausgabeKoerper(Koerper koerper)
{
cout << "(" << koerper.position.x << "," << koerper.position.y << ") ";
cout << "Geschwindigkeit: (" << koerper.geschwindigkeit.x << ", " << koerper.geschwindigkeit.y << ")" << endl;
}