bla
[my-code/triang.git] / triang.c
1 #include <stdio.h>
2 #include <math.h>
3
4
5 #define MAXSIGNAL 100
6
7 double deltaX1, deltaY1; 
8
9         /*
10         zweite Loesung ist achsensymmetrisch zur Verbindungslinie
11         zwischen Freund und einem selbst, also nur dX und dY vertauscht. 
12         */
13
14 void seek_target (float X1, float Y1, float X2, float Y2, int E1, int E2) {
15         
16         /* (X1,Y1) eigene Koordinaten */
17         /* (X2,Y2) freundliche Koordinaten */
18         /* E1 eigene Signalstaerke vom target */
19         /* E2 Signalstaerke des Targets vom Freund */
20
21 double zaehler, nenner, a_q, b_q, c_q, deltaX, deltaY;
22
23 printf("Debug: %f %f %f %f %d %d \n", X1, Y1, X2, Y2, E1, E2);
24
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);
29
30 /* hilfsvariablen */
31 deltaX=X1-X2;
32 deltaY=Y1-Y2;
33 zaehler=a_q-b_q-c_q;
34 printf("Debug: Zaehler %f\n", zaehler);
35 nenner=-2*sqrt(c_q*b_q);
36 printf("Debug: Nenner %f\n", nenner);
37
38 printf("Debug: a=%f , b=%f ... und c=%f\n", sqrt(a_q), sqrt(b_q), sqrt(c_q));
39
40 if ( (sqrt(a_q)+sqrt(b_q))>=sqrt(c_q) ) {
41         printf("impossible situation!\n");
42         deltaX1=0; deltaY1=0;
43 }
44 else {
45         deltaX1=sqrt(b_q)*cos(acos(deltaX/deltaY)-acos(zaehler/nenner));
46         deltaY1=sqrt(b_q)*sin(acos(deltaX/deltaY)-acos(zaehler/nenner));
47 }
48 }
49
50 main() {
51
52 /* beispiel */
53
54 float a, b, c, d;
55 int e, f;
56
57 a=0;
58 b=0;
59 c=0;
60 d=10;
61 e=90;
62 f=90;
63
64 seek_target (a, b, c, d, e, f);
65 /* wir sind im ursprung, kumpel 10 einheiten ueber uns! */
66
67 printf("Debug: seek_target ausgefuehrt!\n");
68
69 printf("1. Moeglichkeit: (%f;%f)\n", deltaX1, deltaY1);
70 // printf("2. Moeglichkeit: (%f;%f)\n", delta2, delta1);
71
72 }
73