Seite 3 von 5
Verfasst: 11.11.2004 19:22
von Kaeru Gaman
btw: angle1+angle2 >= 0 ist zwar ne nette idee...
aber: bei angle1 = -5 und angle2 = 20 ....???????
... wie gesagt: erst testen, dann posten...
.. bei mir ist der test-requester gleich middebei :P
Verfasst: 11.11.2004 19:25
von MLK
tja

Verfasst: 11.11.2004 21:41
von NicTheQuick
Robert Wünsche hat geschrieben:NicTheQuick hat geschrieben:ein paar billige Procedures
... stimmt !
Dein code aus dem codearchiv ist langsammer als meiner !
Soviel dazu !
Tja, das machts

.
PS: Warn zwar nur ein paar millisekunden / 10000 benchs, aber egal!
Wenn es nur ein paar Millisekunden Unterschied bei 10000 Tests waren, dann sind das wahrscheinlich eher Messfehler. Zeig doch mal deine Procedure. Von wegen urheberechtlich geschützt. Soll ich mal laut lachen?

Verfasst: 11.11.2004 22:12
von Robert Wünsche
Code: Alles auswählen
#tests = 1000000
;robs code:
Procedure.f winkel(x1.f,y1.f,x2.f,y2.f)
a.f = x2-x1
b.f = y2-y1
c.f = Sqr(a*a+b*b)
winkel.f = ACos(a/c)*57.29577
If y1 < y2 : winkel=360-winkel : EndIf
ProcedureReturn winkel
EndProcedure
;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
;und jetzt das duel (lead the code) gggg
time = ElapsedMilliseconds()
Repeat
winkel(0,0,90,90)
test + 1
Until test > #tests
time1 = ElapsedMilliseconds() - time
test = 0
time = ElapsedMilliseconds()
Repeat
Object_GetAngle_Points(0,0,90,90)
test + 1
Until test > #tests
time2 = ElapsedMilliseconds() - time
test = 0
time = ElapsedMilliseconds()
Repeat
G_2d_Winkel(0,0,90,90)
test + 1
Until test > #tests
time3 = ElapsedMilliseconds() - time
MessageRequester("test - robs","Benchmark @ "+Str(#tests)+" Durchgängen :"+Str(time1))
MessageRequester("test - nics","Benchmark @ "+Str(#tests)+" Durchgängen :"+Str(time2))
MessageRequester("test - Robert Wünsches","Benchmark @ "+Str(#tests)+" Durchgängen :"+Str(time3))
Mein code ist mein code

, und deshalb ist er nicht uhrheberrechtlich geschützt !
OK nic !
Du hast gewonnen !
aber sau knapp !
Rob ist letzter !
Naja.
Ich kann meinen code ja auch noch optimieren !
Verfasst: 11.11.2004 22:22
von Ynnus
Was gedenkst du denn mit dieser Textstelle zu erreichen?

Verfasst: 11.11.2004 22:29
von Robert Wünsche
ja was denn ?
Ich weiß, war sinnlos, damit wollte ich (eigentlich) die "variable ist nicht da" fehlermeflung im debuger vermeiden !
Egal !
Verfasst: 11.11.2004 22:43
von MVXA
dann erstell sie doch mit global grad.f vorher

Verfasst: 11.11.2004 23:15
von Kaeru Gaman
btw: bei mir ist
180/pi = 57.29577951
eure näherungen sind beide fehlerhaft
und pi = 3.1415927 und nicht weniger :-P
Verfasst: 11.11.2004 23:48
von MLK
damit hättste gewonnen
Code: Alles auswählen
Procedure.f G_2d_Winkel (p_x1.f,p_y1.f,p_x2.f,p_y2.f)
ProcedureReturn ATan((1/((p_y1-p_y2)/(p_x1-p_x2))))*57.29
EndProcedure
sofern der code an sich korrekt ist..
Verfasst: 11.11.2004 23:56
von Kaeru Gaman
*LOL*
MLK hat geschrieben:sofern der code an sich korrekt ist..
wieder mal erst geposted, dann getestet ????
