Perspektive ohne Krümmung im Raycaster

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag 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

:allright:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

remi_meier hat geschrieben:

Code: Alles auswählen

a = 5 * a * 3
wird nicht zusammengefasst...
nuja.. das mein ich ja, dass ich das beim proggen beachte..

also müsste ja

Code: Alles auswählen

a = #b * c * 5
nicht zusammengefasst werden,

Code: Alles auswählen

a = c * 5 * #b
aber schon..

hab ichs kapiert?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Scheint so :)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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]
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Nö, mach du mal, hab noch was anderes zu tun :wink:
Benutzeravatar
SoS
Beiträge: 340
Registriert: 29.08.2004 09:31
Kontaktdaten:

Beitrag 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. :D
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag 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
Benutzeravatar
SoS
Beiträge: 340
Registriert: 29.08.2004 09:31
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von SoS am 02.12.2005 19:46, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

remi_meier hat geschrieben:Nö, mach du mal, hab noch was anderes zu tun :wink:
...ich auch.. komm eh nich nach... RL frisst viel CPU% im moment...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag 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 :D

greetz
Remi
Antworten