Verfasst: 12.11.2004 00:03
stimmt. und wenn, wie ich schrieb, der code an sich fehlerhaft ist, dann war er es schon vorher. da gibts auch nix zu testen.
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
pi.f = 3.141592654
pi180.f = 57.29577951
Code: Alles auswählen
;und weils so schön ist noch nics
; Ermittelt den Winkel zwischen zwei Punkten
Procedure.f Object_GetAngle_Points(x1.f, y1.f, x2.f, y2.f)
Protected w.f
w = ATan((y2 - y1) / (x2 - x1)) * 57.295776
If x2 < x1
w = 180 + w
EndIf
If w < 0 : w + 360 : EndIf
If w > 360 : w - 360 : EndIf
ProcedureReturn w
EndProcedure
;und meiner !
;Routine zum bestimmen des Winkels
;x2 ist der punkt, der die mitte ist und von diesem die gradzahl bestimmt wird!
;y2
Procedure.f G_2d_Winkel (p_x1.f,p_y1.f,p_x2.f,p_y2.f)
grad.f =(1/((p_y1-p_y2)/(p_x1-p_x2)))
grad.f = ATan(grad.f)*57.29
ProcedureReturn grad.f
EndProcedure
x = 1
y = 1
Debug Object_GetAngle_Points(0, 0, x, y)
Debug G_2d_Winkel(x, y, 0, 0)
NicTheQuick hat geschrieben:Nochwas, was ich nicht von dir erwartet hätte: Wenn man von einem Bruch den Kehrwert nimmt, braucht man einfach nur Zähler und Nenner zu vertauschen, was bedeutet, dass du aus der Formel '[c](1 / ((p_y1 - p_y2) / (p_x1 - p_x2)))[/c] auch einfach '[c](p_x1 - p_x2) / (p_y1 - p_y2)[/c]' machen kannst, wodurch deine Procedure wieder schneller werden würde.
*hüstel*NicTheQuick hat geschrieben:Code: Alles auswählen
grad.f =(1/((p_y1-p_y2)/(p_x1-p_x2)))
Dieser Ausschnitt ist nicht aus meiner Procedure, sondern von Roberts Version der Procedure, auch wenn darüber steht '[c];und meiner ![/c]'. Ich habe den Code auf der vorherigen Seite von Robert kopiert. Dieses '[c]meiner[/c]' bezieht sich also auf Robert und nicht auf mich.Kristel hat geschrieben:*hüstel*NicTheQuick hat geschrieben:Code: Alles auswählen
grad.f =(1/((p_y1-p_y2)/(p_x1-p_x2)))
![]()
Code: Alles auswählen
Procedure.f G_2d_Winkel (p_x1.f,p_y1.f,p_x2.f,p_y2.f)
ProcedureReturn ATan(p_x1 - p_x2 / (p_y1 - p_y2))*57.295776
EndProcedure