11 double deltaX1, deltaY1, deltaX2, deltaY2;
14 zweite Loesung ist achsensymmetrisch zur Verbindungslinie
15 zwischen Freund und einem selbst, also nur dX und dY vertauscht.
18 void seek_target (float X1, float Y1, float X2, float Y2, int E1, int E2) {
20 /* (X1,Y1) eigene Koordinaten */
21 /* (X2,Y2) freundliche Koordinaten */
22 /* E1 eigene Signalstaerke vom target */
23 /* E2 Signalstaerke des Targets vom Freund */
25 double zaehler, nenner, a_q, b_q, c_q, deltaX, deltaY;
27 printf("Debug: %f %f %f %f %d %d \n", X1, Y1, X2, Y2, E1, E2);
29 /* quadratwerte der seitenlaengen im dreieck */
30 a_q=(double)MAXSIGNAL/E2;
31 b_q=(double)MAXSIGNAL/E1;
32 c_q=(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2);
38 nenner=-2*sqrt(c_q*b_q);
40 printf("Debug: a=%f , b=%f ... und c=%f\n", sqrt(a_q), sqrt(b_q), sqrt(c_q));
42 if ( (sqrt(a_q)+sqrt(b_q)) <= sqrt(c_q) )
44 printf("impossible situation!\n");
49 deltaX1=-sqrt(b_q)*cos(acos(deltaX/deltaY)-acos(zaehler/nenner));
50 deltaY1=sqrt(b_q)*sin(acos(deltaX/deltaY)-acos(zaehler/nenner));
56 int main (int argc, char ** argv)
70 seek_target (a, b, c, d, e, f);
71 /* wir sind im ursprung, kumpel 10 einheiten ueber uns! */
73 printf("Debug: seek_target ausgefuehrt!\n");
75 printf("1. Moeglichkeit: Delta(%f;%f)\n", deltaX1, deltaY1);
76 printf("2. Moeglichkeit: Delta(%f;%f)\n", deltaX2, deltaY2);