-
Winkelberechnung
Hi Leute,
ich hab mir mal folgenden code für den cosinussatz zusammengebastelt, aber nun steck ich fest, wie kann ich mir vom ergebniss das zuletzt in "winkel" steht ( ca. 0,7999) den daraus resultierenden Winkel von 36,88° berechnen
Code:
Dim A As Single
Dim B As Single
Dim C As Single
Dim A2 As Single
Dim B2 As Single
Dim C2 As Single
Dim Winkel As Single
Config Portc.0 = Output
A = 63.25
B = 100
C = 100
Do
B2 = B * B
A2 = A * A
C2 = C * C
Winkel = B2 + C2
Winkel = Winkel - a2
Winkel = Winkel / 2
Winkel = Winkel / B
Winkel = Winkel / C
Winkel = Cos(winkel)
Loop
-
Hi!
Meiner Meinung nach musst du erst die Terme über und unter dem Bruchstrich ausrechnen und die erst dann dividieren. Ein Bruchstrich ist ja gleichbedeutend mit einer Klammer für Zähler und Nenner.
Dann musst du wahrscheinlich acos statt cos nehmen, und vorher den Winkel in Rad umrechnen (180/PI).
Aber alles nur geraten....
Viele Grüße,
William
-
Hi,
Code:
Dim A As Single
Dim B As Single
Dim C As Single
Dim A2 As Single
Dim B2 As Single
Dim C2 As Single
Dim Winkel As Single
Config Portc.0 = Output
A = 63.25
B = 100
C = 100
Do
B2 = B * B
A2 = A * A
C2 = C * C
Winkel = B2 + C2
Winkel = Winkel - A2
Winkel = Winkel / 2
Winkel = Winkel / B
Winkel = Winkel / C
Winkel = ACOS(winkel) ' danach müsstest du den Winkel im Bogenmaß haben
Winkel = Winkel * 180
Winkel = Winkel / PI
Loop
Es gibt aber sicher auch eine einfachere Variante, so müsstest du halt Pi annähernd in eine Konstante packen, dann ist es aber natürlich nichtmehr genau ;-)
/EDIT Nö warum soll er erst Zähler und Nenner ausrechnen, es reicht doch wenn er den Zähler ausrechnet und dann einzeln dividiert.
Statt COS muss ACOS hin und statt B2 = B * B könnte man auch
B2 = SQR(B) schreiben.
-
Danke für die Antworten, ich werds dann mal probieren, ich habs grad mal so durchgerechnet und das scheint zu funktionieren, das ganze soll mal ne Positionsbestimmung mit 4 Bake werden, mal schauen wies funzt :-)
-
hi,
sind A,B und C auch winkel? wenn ja, müssen diese auch zuerst in rad umgerechnet werden.
mfg jeffrey
-
hi, nein, A,B und C sind die Seiten des ausgemessenen Dreiecks
-
hi,
wie soll denn die positionsbestimmung funktionieren? du hast doch dann 4 winkel zwischen den baken. und nen bekannten abstand und winkel zwischen den baken. daraus kannst du dann die länegn berechnen. aber dann müsste deine ganze berechnung dach andersrum funktionieren, also den winkel die länge berechnen, oder?
mfg jeffrey
-
hi, ich hab mir das so gedacht: ich habe ein Quadrat mit zb. 100x100, in jeder ecke steht ein Bake. Der Bot misst sich alle paar sekunden den Abstand zu jedem Bake, dann hat man 4 bekannte diagonalen, die Länge der jeweiligen Seiten des Quadrates kennt der Bot und so müsste es doch möglich sein mit hilfe vom Cosinussatz zimlich genau die Position als X und Y Koordinate zu berechnen. Falls ich mir da was falsch überlegt habe bitte koregiert mich
-
hi,
wie willst du denn den abstand zur bake messen? und kann der bot die einzelenen baken voneinander unterscheiden? da brauchst dann aber eigntlich nur 2 baken, sofern sie in den ecken stehen
mfg jeffrey
-
hi, ich dachte mir mal so auf die schnelle, daß es mit Ultraschall schon irgendwie gehen müßte sich den abstand zu dem Bake auszumessen. Wenn der Bot zB. ein Signal ausschickt mit dem die messung gestartet wird, und die Bake 1 einen Impuls, Bake 2 2 Impulse usw. zurücksendet dann weiß der Bot doch welche Bake geantwortet hat und anhand der vergangenen Zeit zwischen den Impulsen müßte man sich doch dann die Entfernung ausrechnen können. Nach meiner Überlegung brauch ich mindestens 3 Baken wenn mich nich alles täuscht, denn so wie ich X und Y berechne brauch ich dazu die seiten von 2 Dreiecken...