Dissertation-Endstand3 - KLUEDO - Universität Kaiserslautern
Dissertation-Endstand3 - KLUEDO - Universität Kaiserslautern
Dissertation-Endstand3 - KLUEDO - Universität Kaiserslautern
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Anhang 79<br />
else {<br />
Px = -999.9;<br />
Py = -999.9;<br />
return false;<br />
}<br />
}<br />
bool SchnittGradeGrade(const double Ax,const double Ay,<br />
const double Bx,const double By,<br />
const double Cx,const double Cy,<br />
const double Dx,const double Dy,<br />
double& Px,double& Py)<br />
{<br />
double nenner = (Bx-Ax)*(Dy-Cy)-(By-Ay)*(Dx-Cx);<br />
if (nenner == 0) {<br />
Px = -999.9;<br />
Py = -999.9;<br />
return false;<br />
}<br />
double r = ( (Ay-Cy)*(Dx-Cx)-(Ax-Cx)*(Dy-Cy) ) / nenner ;<br />
Px = Ax + r * (Bx-Ax);<br />
Py = Ay + r * (By-Ay);<br />
return true;<br />
}<br />
double Abstand(const double Ax,const double Ay,<br />
const double Bx,const double By)<br />
{<br />
return sqrt( (Bx-Ax)*(Bx-Ax) + (By-Ay) * (By-Ay) ) ;<br />
}<br />
//-------------------------------------------------------------------<br />
// Hilfsfunktionen fuer die Zeitberechnung<br />
double ZeitBeiDurchstoss (const double Ax,const double Ay,<br />
const double Bx,const double By,<br />
const double Px,const double Py,<br />
const double At,const double Bt)<br />
{<br />
double dAB = Abstand(Ax, Ay, Bx, By);<br />
double dAP = Abstand(Ax, Ay, Px, Py);<br />
return ( dAP/dAB * (Bt - At) ) + At;<br />
}<br />
double ZeitExtrapoliert(const double Ax,const double Ay,<br />
const double Bx,const double By,<br />
const double Px,const double Py,<br />
const double At,const double Bt)<br />
{<br />
double dAP = Abstand(Ax, Ay, Px, Py);<br />
double dBP = Abstand(Bx, By, Px, Py);<br />
return ( dAP*Bt - dBP*At ) / ( dAP- dBP) ;<br />
}<br />
//-------------------------------------------------------------------<br />
// Datenspeicher fuer Fahrzeug-Positionen<br />
struct Position {<br />
static const double INVALIDDOUBLE;<br />
double x,y;<br />
bool valid;<br />
Position() {<br />
x = INVALIDDOUBLE ;<br />
y = INVALIDDOUBLE ;<br />
valid = false;<br />
}<br />
friend ostream& operator