From c05b0482be69ed40fd1074ce3e6232d43d2bdf55 Mon Sep 17 00:00:00 2001
From: anonymous <anonymous>
Date: Fri, 9 Aug 2002 02:28:12 +0000
Subject: [PATCH] bla

---
 triang.c | 38 ++++++++++++++++++++++++++------------
 1 file changed, 26 insertions(+), 12 deletions(-)

diff --git a/triang.c b/triang.c
index c8e6d3f..04ec140 100644
--- a/triang.c
+++ b/triang.c
@@ -4,7 +4,7 @@
 
 #define MAXSIGNAL 100
 
-double delta1, delta2; 
+double deltaX1, deltaY1; 
 
 	/*
 	zweite Loesung ist achsensymmetrisch zur Verbindungslinie
@@ -18,19 +18,33 @@ 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 */
 
-double zaehler, nenner, zusatz;
+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);
 
-zaehler=MAXSIGNAL*(1./E2-1./E1)-(X1-X2)*(X1-X2)-(Y1-Y2)*(Y1-Y2);
+/* 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;
 printf("Debug: Zaehler %f\n", zaehler);
-nenner=-2*sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2));
+nenner=-2*sqrt(c_q*b_q);
 printf("Debug: Nenner %f\n", nenner);
-zusatz=sqrt((double)MAXSIGNAL/E1);
-printf("Debug: Zusatz %f\n", zusatz);
 
-delta1=zusatz*sin(acos(zaehler/(nenner*zusatz)));
-delta2=zaehler/nenner;
+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));
+}
 }
 
 main() {
@@ -44,16 +58,16 @@ a=0;
 b=0;
 c=0;
 d=10;
-e=10;
-f=30;
+e=90;
+f=90;
 
 seek_target (a, b, c, d, e, f);
 /* wir sind im ursprung, kumpel 10 einheiten ueber uns! */
 
 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: (%f;%f)\n", deltaX1, deltaY1);
+// printf("2. Moeglichkeit: (%f;%f)\n", delta2, delta1);
 
 }
 
-- 
2.39.5