-// printf("Debug: %f %f %f %f %d %d \n", X1, Y1, X2, Y2, E1, E2);
-
-double zaehler, nenner, zusatz;
-
-zaehler=MAXSIGNAL*(1./E1-1./E2)-(X1-X2)*(X1-X2)-(Y1-Y2)*(Y1-Y2);
-nenner=2*sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));
-zusatz=sqrt((double)MAXSIGNAL/E1);
-
-*delta1=zusatz*sin(acos(zaehler/(nenner*zusatz)));
-*delta2=zaehler/nenner;
+ double zaehler, nenner, a_q, b_q, c_q, deltaX, deltaY;
+
+ printf("Debug: %f %f %f %f %d %d \n", X1, Y1, X2, Y2, E1, E2);
+
+ /* quadratwerte der seitenlaengen im dreieck */
+ a_q=(double)MAXSIGNAL/E2;
+ b_q=(double)MAXSIGNAL/E1;
+ c_q=(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2);
+
+ /* hilfsvariablen */
+ deltaX=X1-X2;
+ deltaY=Y1-Y2;
+ zaehler=a_q-b_q-c_q;
+ nenner=-2*sqrt(c_q*b_q);
+
+ printf("Debug: a=%f , b=%f ... und c=%f\n", sqrt(a_q), sqrt(b_q), sqrt(c_q));
+
+ if ( (sqrt(a_q)+sqrt(b_q)) <= sqrt(c_q) )
+ {
+ printf("impossible situation!\n");
+ deltaX1=0; deltaY1=0;
+ }
+ else
+ {
+ deltaX1=-sqrt(b_q)*cos(acos(deltaX/deltaY)-acos(zaehler/nenner));
+ deltaY1=sqrt(b_q)*sin(acos(deltaX/deltaY)-acos(zaehler/nenner));
+ deltaX2=deltaY1;
+ deltaY2=-1*deltaX1;
+ }