Hi. Ich suche einen Algorithmus, mit dem ich eine Dreieckspeilung berechnen kann. folgendes: wir haben ein koordinatensystem mit X=1000m
Y=1000m
wir haben drei sender A(250|250),B(640|480),C(250|700)
Die sender stehen also in einem gleichwinkligen dreieck zueinander in der entfernung |AC| = |AB| = |BC| = 450m
ich habe einen Punkt T(?|?) der von A 250m von B 200m und von C 365m entfernt ist. wie berechne ich die koordinaten des Punktes T der im dreieck ABC steht??
Vielen Dank für die Hilfe schonmal im vorraus, ich weiss dass es eine Extrem schwere Aufgabe ist.
mailto: Synthetic_codes@yahoo.de
Programmieren - alles kontrollieren 4.936 Themen, 20.625 Beiträge
Dann löse ich das Gleichungssystem erst mal komplett auf:
Stelle gerade fest das sich bei der letzten Formel ein kleiner Fehler eingeschlichen hatte (Faktor zwei nicht komplett ausgeklammert - Der HTML-Code dieser Formeln ist alles andere als übersichtlich...):
Der Teil "2ty(2ay" muss so aussehen "2ty(ay"
<=>
2tx(ax-bx) = (d(B, T))2-(d(A, T))2 - [2ty(ay-by) + bx2 +by2 -ax2 -ay2]
2ty(ay-cy) = (d(C, T))2-(d(A, T))2 - [2tx(ax-cx) + cx2 +cy2 -ax2 -ay2]
<=>
2tx(ax-bx) = (d(B, T))2-(d(A, T))2 - 2ty(ay-by) - bx2 -by2 +ax2 +ay2
2ty(ay-cy) = (d(C, T))2-(d(A, T))2 - 2tx(ax-cx) - cx2 -cy2 +ax2 +ay2
<=>
tx = [(d(B, T))2-(d(A, T))2 - 2ty(ay-by) - bx2 -by2 +ax2 +ay2] / [2(ax-bx)]
ty = [(d(C, T))2-(d(A, T))2 - 2tx(ax-cx) - cx2 -cy2 +ax2 +ay2] / [2(ay-cy)]
Hier höre ich auf allgemein weiter zu rechnen, würde mir dann doch zu aufwendig...
A(250|250) : ax=250 ; ay=250
B(640|480) : bx=640 ; by=480
C(250|700) : cx=250 ; cy=700
d(A, T) = 250
d(B, T) = 200
d(C, T) = 365
tx = [(d(B, T))2-(d(A, T))2 - 2ty(250-480) - 6402-4802 +2502 +2502] / [2(250-640)]
ty = [(d(C, T))2-(d(A, T))2 - 2tx(250-640) - 2502-7002 +2502 +2502] / [2(250-700)]
<=>
tx = [(d(B, T))2-(d(A, T))2 +460ty - 6402-4802 +2502 +2502] / -780
ty = [(d(C, T))2-(d(A, T))2 +780tx - 2502-7002 +2502 +2502] / -900
<=>
tx = [(d(B, T))2-(d(A, T))2 +460ty -515000] / -780
ty = [(d(C, T))2-(d(A, T))2 +780tx -427500] / -900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(A, T))2-427500 + 780tx] / -900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(A, T))2-427500 - 780[[(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780]] / -900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(A, T))2-427500 -(d(B, T))2+(d(A, T))2+515000 - 460ty] / -900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(B, T))2-427500+515000 - 460ty] / -900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(B, T))2+87500 - 460ty] / -900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(B, T))2+87500]/-900 +(460/900)ty
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty-(23/45)ty = [(d(C, T))2-(d(B, T))2+87500]/-900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
22/45ty = [(d(C, T))2-(d(B, T))2+87500]/-900
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(B, T))2+87500]/-900*45/22
<=>
tx = [(d(B, T))2-(d(A, T))2-515000 + 460ty] / -780
ty = [(d(C, T))2-(d(B, T))2+87500]/-440
=>
tx = [2002-2502-515000 + 460ty] / -780
ty = [3652-2002+87500]/-440
<=>
tx = [-537500 + 460ty] / -780
ty = [180725]/-440
<=>
tx = [-537500 + 460ty] / -780
ty = [180725]/-440
<=>
tx = [-537500 + 460ty] / -780
ty = -36145/88 ~-410 ; vermutlich vorzeichenfehler - den such ich jetzt aber nicht extra ...
<=>
tx = [-537500 + 460*36145/88] / -780
ty = -36145/88 ~-410 ; vermutlich vorzeichenfehler - den such ich jetzt aber nicht extra ...
<=>
tx ~ 446,9
ty = -36145/88 ~-410 ; vermutlich vorzeichenfehler - den such ich jetzt aber nicht extra ...
d(A,T) = 253,8 ~ 250
d(B,T) = 205,3 ~ 200
d(C,T) = 350,6 ~ 365
Ergibt eine Abweichung von <5%, bei echten Messwerten könnte man damit schon ganz zufrieden sein.
Dieser Ansatz stellt natürlich nur einer von vielen dar, man könnte alternativ auch mit parallelen Geraden arbeiten und diese zum Schnitt bringen...
CU Borlander