Seite 2 von 3
Verfasst: 02.12.2005 18:17
von AndyX
@Kekskiller:
Es können sehr viele Berechnungen sein (vorallem bei großen Räumen) weil du für jeden ausgesendeten Strahl in einem bestimmten Intervall immer überprüfst, ob eine Mauer im Weg ist. Du könntest es so wie in diesem Tutorial machen:
http://permadi.com/tutorial/raycast/rayc7.html

Verfasst: 02.12.2005 18:20
von Kaeru Gaman
remi_meier hat geschrieben:
wird nicht zusammengefasst...
nuja.. das mein ich ja, dass ich das beim proggen beachte..
also müsste ja
nicht zusammengefasst werden,
aber schon..
hab ichs kapiert?
Verfasst: 02.12.2005 18:20
von remi_meier
Scheint so

Verfasst: 02.12.2005 18:22
von Kaeru Gaman
yeah...
also, das ist doch tips & tricks - würdig...
schreib doch mal nen schönen absatz dazu, remi..
[war ja dein tipp]
Verfasst: 02.12.2005 18:34
von remi_meier
Nö, mach du mal, hab noch was anderes zu tun

Verfasst: 02.12.2005 18:50
von SoS
remi_meier hat geschrieben:@SoS: falsch
PB hat Constants Folding, welches Konstanten zusammenfasst:
#PI / 180.0 wird direkt zu 0.01745329 noch während der Kompilierzeit!
Remi wo ist da ein Problem ?

#PI ist eine konstante und die 180 ändert sich ja auch nicht.
Wenn in meinem Programm oft #PI / 180.0 vorkommt ersetze ich das duch eine Konstante und quäle die CPU nicht unnötig.

Verfasst: 02.12.2005 18:58
von remi_meier
@SoS: Kein Problem, nur falsch (wenn ich dich richtig verstanden habe).
SoS hat geschrieben:Was mir hier gerade so auffällt.
Warum ersetzte Du nicht #PI / 180 z.b. durch eine Konstante #PI2=#PI / 180 ?
Kleinvieh macht bekanntlich auch Mist.

Es ist ganz einfach unnötig, da PB das für dich erledigt. Ich verstehe unter
Mist einen Geschwindigkeitsverlust, wenn du darunter natürlich die Leser-
lichkeit verstehst, dann ist es Geschmackssache.
Es ist nur so, dass es, ob du jetzt
a = #PI / 180 * a
oder
a = 0.01745329 * a
schreibst, völlig egal ist von der Geschwindigkeit her, da PB während dem
Kompilieren '#PI / 180' in 0.01745329 umwandelt, ohne Geschwindigkeits-
verlust bei der Ausführung des Codes.
Das ist alles
greetz
Remi
Verfasst: 02.12.2005 19:10
von SoS
/Edit
OK,überredet,habs mal getestet.
Code: Alles auswählen
#pi2=#pi/180
x1=ElapsedMilliseconds()
For i=0 To 10000000
a=Sin(#pi2)
Next
x2=ElapsedMilliseconds()
For i=0 To 10000000
a=Sin(#pi/180)
Next
x3=ElapsedMilliseconds()
MessageRequester("",Str(x2-x1)+Chr(13)+Str(x3-x2))
Scheinbar "ziehen" hier die Tricks aus Interpreterzeiten nicht mehr.
Verfasst: 02.12.2005 19:29
von Kaeru Gaman
remi_meier hat geschrieben:Nö, mach du mal, hab noch was anderes zu tun

...ich auch.. komm eh nich nach... RL frisst viel CPU% im moment...
Verfasst: 02.12.2005 19:46
von remi_meier
SoS hat geschrieben:Das ist richtig nur bezog sich der Tip auf den Code von Seite 1 und da kommt nur
Code: Alles auswählen
s.f = (#PI / 180) * angle
DrawText(Str(playerz/(#PI/180)))
vor und somit besteht da das Problem nicht .

Ich sehe immernoch kein Problem, du hast einfach eine andere Art das
gleiche zu erreichen. Es geht mir nur darum, dass die Aussage, '#PI / 180'
benötige mehr CPU als '#PI2', falsch ist.
Also dass:
Code: Alles auswählen
#PI = 3.1415926
a = #PI / 180 * b
EXAKT das gleiche (Geschwindigkeits-/CPU-technisch) ist wie
#PI = 3.1415926
#PI2 = #PI / 180
a = #PI2 * b
Aus deinen Aussagen lese ich, dass die Variante mit #PI2 schneller ist/weniger
CPU frisst, was nunmal falsch ist.
Aber wie gesagt, nichts gegen deine Methode, welche ev. für den einen
oder anderen die Leserlichkeit erhöht (für mich in diesem Fall nicht).
@KG:
Dann muss wohl die Welt auf diesen mächtigen und überaus wichtigen Tipp
verzichten
greetz
Remi