X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Ftriang.git;a=blobdiff_plain;f=triang.c;h=eb1f6a6234225efc0e64663a33225b6170e2baa1;hp=ca5207a97c42c7e14f2967cf243d18427b804ab7;hb=refs%2Fheads%2Fmaster;hpb=f2ec381e96ecc833913e5294fc9c0154e771305f diff --git a/triang.c b/triang.c index ca5207a..eb1f6a6 100644 --- a/triang.c +++ b/triang.c @@ -1,9 +1,14 @@ +/* + * triang.c + */ + #include #include + #define MAXSIGNAL 100 -double *delta1, *delta2; +double deltaX1, deltaY1, deltaX2, deltaY2; /* zweite Loesung ist achsensymmetrisch zur Verbindungslinie @@ -17,41 +22,59 @@ void seek_target (float X1, float Y1, float X2, float Y2, int E1, int E2) { /* E1 eigene Signalstaerke vom target */ /* E2 Signalstaerke des Targets vom Freund */ -// 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; + } } -main() { - -/* beispiel */ - -printf("Debug: funzt noch ...\n"); +int main (int argc, char ** argv) +{ + /* beispiel */ -float a, b, c, d; -int e, f; + float a, b, c, d; + int e, f; -a=0; -b=0; -c=0; -d=10; -e=90; -f=35; + a=0; + b=0; + c=0; + d=10; + e=5; + f=2; -seek_target (a, b, c, d, e, f); -/* wir sind im ursprung, kumpel 10 einheiten ueber uns! */ + seek_target (a, b, c, d, e, f); + /* wir sind im ursprung, kumpel 10 einheiten ueber uns! */ -printf("Debug: seek_target ausgefuehrt!\n"); + printf("Debug: seek_target ausgefuehrt!\n"); -printf("1. Moeglichkeit: (%f;%f)\n", *delta1, *delta2); -printf("2. Moeglichkeit: (%f;%f)\n", *delta2, *delta1); + printf("1. Moeglichkeit: Delta(%f;%f)\n", deltaX1, deltaY1); + printf("2. Moeglichkeit: Delta(%f;%f)\n", deltaX2, deltaY2); + return 0; }