P
Ich glaube mein knoten im Kopf ist gestern geplatzt,, glaube dass ich die lösung für mein Problem gefunden habe.
Danke nochmal für die Hilfe.
Hier mal der Code bisher:
Header:
#pragma once
#ifndef PUNKTEUNDLINIEN_H
#define PUNKTEUNDLINIEN_H
struct Punkt
{
double X, Y;
};
struct Gerade
{
double m, n;
};
Gerade AnstiegundVerschiebung(Punkt Punkt1, Punkt Punkt2);
Punkt Mittelbunktberechnung(Punkt Punkt1, Punkt Punkt2, Gerade Gerade1);
Punkt Punktberechnung(Gerade Gerade1);
Gerade Lotberechnung(Punkt Punkt3, Gerade Gerade1);
Punkt Schnittpunktberechnung(Gerade Gerade1, Gerade Gerade2);
#endif // !PUNKTEUNDLINIEN_H
.cpp zum Header
#include "PunkteundLinien.h"
#include <iostream>
using namespace std;
Gerade AnstiegundVerschiebung(Punkt Punkt1, Punkt Punkt2)
{
Gerade Gerade1;
Gerade1.m = (Punkt2.Y - Punkt1.Y) / (Punkt2.X - Punkt1.X); // Anstieg der Geraden
Gerade1.n = Punkt1.Y - (Punkt1.X * Gerade1.m); // Verschiebung der Geraden
return Gerade1;
}
Punkt Mittelbunktberechnung(Punkt Punkt1, Punkt Punkt2, Gerade Gerade1)
{
Punkt Punkt12;
Punkt12.X = (Punkt1.X + Punkt2.X)*0.5; //Mittel auf X-Achse
Punkt12.Y = Gerade1.m * Punkt12.X + Gerade1.n; //Mittel auf y-Achse
return Punkt12;
}
Punkt Punktberechnung(Gerade Gerade1) //Berechnung eines/mehrerer Punkte auf der Geraden
{
Punkt P;
do
{
cin >> P.X;
P.Y = Gerade1.m*P.X + Gerade1.n;
cout << P.Y << endl;
} while (!(P.X == 0.0));
return P;
}
Gerade Lotberechnung(Punkt Punkt3, Gerade Gerade1)
{
Gerade Gerade2;
Gerade2.m = -1.0 / Gerade1.m;
Gerade2.n = Punkt3.Y - (Gerade2.m*Punkt3.X);
return Gerade2;
}
Punkt Schnittpunktberechnung(Gerade Gerade1, Gerade Gerade2)
{
Punkt P4;
P4.X = (Gerade2.n - Gerade1.n) / (Gerade1.m - Gerade2.m); //Schnitt auf X-Achse
P4.Y = Gerade1.m*P4.X + Gerade1.n; //Schnitt auf Y-Achse
return P4;
}
main
#include <iostream>
#include "PunkteundLinien.h"
using namespace std;
int main() {
Punkt P1, P2, P3, Schnittpunkt, P12, P;
Gerade G1, G2;
cout << "Bitte ersten X-Wert eingeben: ";
cin >> P1.X;
cout << "Bitte ersten Y-Wert eingeben: ";
cin >> P1.Y;
do //Zur Vorbeugung vor Punkt auf Punkt
{
cout << "Bitte zweiten X-Wert eingeben: ";
cin >> P2.X;
cout << "Bitte zweiten Y-Wert eingeben: ";
cin >> P2.Y;
} while ((P1.X == P2.X) || (P1.Y == P2.Y));
G1 = AnstiegundVerschiebung(P1, P2);
cout << "Anstieg: " << G1.m << endl;
cout << "Verschiebung: " << G1.n << endl;
P12 = Mittelbunktberechnung(P1, P2, G1);
cout << "Mittelpunkt bei: X=" << P12.X << " und Y=" << P12.Y << endl;
cout << "Einzelne Punkte auf der Geraden berechnen. Mit X=0 beenden." << endl;
P = Punktberechnung(G1);
cout << "Eingabe zu P3: " << endl;
cin >> P3.X;
cin >> P3.Y;
cout << "Neuer Punkt P3 bei: (" << P3.X << "," << P3.Y << ")" << endl;
G2 = Lotberechnung(P3, G1);
cout << "Normale: y= " << G2.m << "*x+(" << G2.n << ")" << endl;
Schnittpunkt = Schnittpunktberechnung(G1, G2);
cout << "Schnittpunkt: (" << Schnittpunkt.X << ", " << Schnittpunkt.Y << ")" << endl;
system("pause");
return 0;
}