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