Rechenkette? / Winkelberechnung mit Cosinus?
Hallo,
ich schreibe mir gerade eine rechnung und die sieht grade so aus:
Code:
Hoehe_q = Hoehe * Hoehe
Abstand_q = Abstand * Abstand
Dis_q = Hoehe_q + Abstand_q
Dis = Sqr(dis_q)
Ist der Satz des Pytagoras.
nun würde ich das gerner vereinfachen!
in etwa so:
Code:
Dis_q = Hoehe * Hoehe + Abstand * Abstand
Dis = Sqr(dis_q)
oder sogar so:
Code:
Dis = Sqr(Hoehe * Hoehe + Abstand * Abstand)
dieses funktioniert so aber leider nicht! nur meine ganz oben gepostete version läuft. dort sind mir aber zu viele variabeln drinne die ich garnicht bräuchte.
also wäre das ganze möglich? wenn ja wie?
mfg Bammel[/code]
Liste der Anhänge anzeigen (Anzahl: 1)
So sry für doppelpost aber ich wollte nicht beides in einem packen!
Erstmal hab ich nen bild angehangen das ihr euch erstmal ein eindruck machen könnt was ich genau will.
So der code sieht so aus:
Code:
Declare Sub Berechnung
Dim Hoehe As Byte
Dim Abstand As Byte
Dim Hoehe_q As Word
Dim Abstand_q As Word
Dim Dis_q As Word
Dim Dis As Byte
Dim Knie_wi As Byte
Dim Kniea As Word
Dim Knieb As Word
Dim Knie_zw_a As Word
Dim Knie_zw_b As Word
Dim Knie_zw_c As Word
Dim Knie_zw_d As Integer
Dim Knie_zw_e As Single
Dim Knie_zw_wi As Single
Const Oberschenkel = 67
Const Unterschenkel = 87
Const Oberschenkel_q = 4489
Const Unterschenkel_q = 7569
Hoehe = 50
Abstand = 100
...
Sub Berechnung
If Hoehe > 110 Then Hoehe = 110
If Abstand < 37 Then Abstand = 37
Hoehe_q = Hoehe * Hoehe
Abstand_q = Abstand * Abstand
Dis_q = Hoehe_q + Abstand_q
Dis = Sqr(dis_q)
'-------------- Knie ----------------------
Knie_zw_a = Dis_q - Unterschenkel_q
Knie_zw_b = Knie_zw_a - Oberschenkel_q
Knie_zw_c = Unterschenkel * Oberschenkel
Knie_zw_d = -2 * Knie_zw_c
Knie_zw_e = Knie_zw_b / Knie_zw_d
Knie_zw_wi = Cos(knie_zw_e)
Knie_wi = Knie_zw_wi * 100
If Knie_wi < 45 Then Knie_wi = 45
If Knie_wi > 180 Then Knie_wi = 180
Kniea = 6400 / 180
Knieb = Kniea * Knie_wi
Servo(2) = 63200 - Knieb
Hab den code ein wenig verkürzt hoffe das okay so!?
formel hab ich diese verwendet: gamma = cos((c² - a² - b²) / (-2 * a * b))
a ist Unterschenkel
b ist Oberschenkel
c ist Dis
(siehe auch angehängte zeichnung)
danke schonmal fürs anschauen!
MfG Bammel
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich hab schonwieder ein problem! man, dabei bin ich eigentlich recht gut in mathe.
ertsmal danke an ikarus, rad2deg() funzt bestens.
also ich habs nochmal im angehangen bild dargestellt suche diese beiden winkel um den servos dort auchnoch stellen zu können. aber iwie funktioniert das nicht. habs mit dem selben verfahren versucht wie den obersten winkel. nur halt die dementsprechende formal genommen. aber da hab ihc jeweils 180° bekommen dies kann ja nicht sein. dann dachte ich okay versuchst es mal von vorne formeln gelöscht und nochmal hab dann aber ist mir eingefallen da ich ja im grünen dreieck nen rechten winkel hab kann ich ja den einfachen kosinus verwenden.
cos(beta) = a / c
da bekomme ich aber 51° dachte okay ist ja richtig. aber nein! das ist ja das falsche dreieck?! zufall???
code sieht so aus:
Code:
Dim Hufta_zw_a As Single
Dim Hufta_zw_b As Single
Dim Hufta_wi As Byte
...
Hufta_zw_a = Hoehe / Dis
Hufta_zw_b = Cos(hufta_zw_a)
Hufta_wi = Rad2deg(hufta_zw_b)
mfg bammel