7 double deltaX1, deltaY1;
10 zweite Loesung ist achsensymmetrisch zur Verbindungslinie
11 zwischen Freund und einem selbst, also nur dX und dY vertauscht.
14 void seek_target (float X1, float Y1, float X2, float Y2, int E1, int E2) {
16 /* (X1,Y1) eigene Koordinaten */
17 /* (X2,Y2) freundliche Koordinaten */
18 /* E1 eigene Signalstaerke vom target */
19 /* E2 Signalstaerke des Targets vom Freund */
21 double zaehler, nenner, a_q, b_q, c_q, deltaX, deltaY;
23 printf("Debug: %f %f %f %f %d %d \n", X1, Y1, X2, Y2, E1, E2);
25 /* quadratwerte der seitenlaengen im dreieck */
26 a_q=(double)MAXSIGNAL/E2;
27 b_q=(double)MAXSIGNAL/E1;
28 c_q=(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2);
34 printf("Debug: Zaehler %f\n", zaehler);
35 nenner=-2*sqrt(c_q*b_q);
36 printf("Debug: Nenner %f\n", nenner);
38 printf("Debug: a=%f , b=%f ... und c=%f\n", sqrt(a_q), sqrt(b_q), sqrt(c_q));
40 if ( (sqrt(a_q)+sqrt(b_q))>=sqrt(c_q) ) {
41 printf("impossible situation!\n");
45 deltaX1=sqrt(b_q)*cos(acos(deltaX/deltaY)-acos(zaehler/nenner));
46 deltaY1=sqrt(b_q)*sin(acos(deltaX/deltaY)-acos(zaehler/nenner));
64 seek_target (a, b, c, d, e, f);
65 /* wir sind im ursprung, kumpel 10 einheiten ueber uns! */
67 printf("Debug: seek_target ausgefuehrt!\n");
69 printf("1. Moeglichkeit: (%f;%f)\n", deltaX1, deltaY1);
70 // printf("2. Moeglichkeit: (%f;%f)\n", delta2, delta1);