Ungenau: Sin,Cos im Array
Übersicht

![]() |
Michi1988Betreff: Ungenau: Sin,Cos im Array |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tag, hab ma was gemacht und irgendwie habe ich was volkommen
falsch gemacht oder es entsteht wirklich eine leichte ungenauigkeit beim speichern. Beim ausführen wird jeder sehen was schei*e is. Code: [AUSKLAPPEN] ;By Michi1988 aliaZ <jab>@(mh) Graphics 800,600,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() AppTitle "<jab>@(mh)s Shadowexample" Dim ausdehnung#(360) Dim awinkel#(360,1) For steps#=0 To 360 Step 0.5 awinkel#(steps,0)=Cos(steps#) awinkel#(steps,1)=Sin(steps#) Next For steps#=0 To 360 Step 0.5 ausdehnung#(steps)=1 Next Repeat start=MilliSecs() Color 255,0,255 Rect 600,10,200,200 Oval 100,100,100,100 Line 0,0,800,600 Line 1,0,801,600 mx=400+awinkel(flips,0)*350 my=300+awinkel(flips,1)*250 For steps=1 To 500 For winkel#=1 To 360 Step 0.5 If Ausdehnung(winkel#)=1 Then rgb=ReadPixelFast( MX+awinkel(winkel#,0)*steps,MY+awinkel(winkel#,1)*steps ) If (rgb And $FF0000)/$10000<>255 And (rgb And $FF00)/$100<>255 And (rgb And $FF)=0 Then Color 255-steps/2,255-steps/2,0 If 255-steps/2<=0 Then ausdehnung(winkel*2)=0 If MX+awinkel#(winkel#,0)*steps<=000 Then ausdehnung(winkel)=0 If MX+awinkel#(winkel#,0)*steps>=800 Then ausdehnung(winkel)=0 If MY+awinkel#(winkel#,1)*steps<=000 Then ausdehnung(winkel)=0 If MY+awinkel#(winkel#,1)*steps>=600 Then ausdehnung(winkel)=0 ;ÜÜÜÜÜÜÜÜÜÜÜÜ Plot MX+awinkel#(winkel#,0)*steps,MY+awinkel#(winkel#,1)*steps Else Ausdehnung(Winkel#)=0 End If End If Next Next flips=(flips+2) Mod 360 For steps=1 To 360 ausdehnung(steps)=1 Next Color 255,255,255 Text 400,300,"Time to render scene: "+fps+" milliseconds!" Flip ende=MilliSecs() fps=ende-start Cls Until KeyHit(1) Habe es öfter mit writepixelfast oder writepixel gemacht, um die Geschw, zu steigern, das hat jedoch nicht geklappt. Habe bei ;ÜÜÜÜÜÜ nur anstatt das Plot das eingefügt: Code: [AUSKLAPPEN] rgb2=(255-steps/2)*$10000 + (255-steps/2)*$100 + 1 WritePixelFast MX+awinkel#(winkel#,0)*steps,MY+awinkel#(winkel#,1)*steps,rgb2 dann tritt aber ein ziemlich großer Fehler auf. Könnt ihr mir Helfen? Michi |
||
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also das mit dem writepixelfast ist kein Problem:
Code: [AUSKLAPPEN] ;By Michi1988 aliaZ <jab>@(mh)
Graphics 800,600,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() AppTitle "<jab>@(mh)s Shadowexample" Dim ausdehnung#(360) Dim awinkel#(360,1) For steps#=0 To 360 Step 0.5 awinkel#(steps,0)=Cos(steps#) awinkel#(steps,1)=Sin(steps#) Next For steps#=0 To 360 Step 0.5 ausdehnung#(steps)=1 Next Repeat start=MilliSecs() Color 255,0,255 Rect 600,10,200,200 Oval 100,100,100,100 Line 0,0,800,600 Line 1,0,801,600 mx=400+awinkel(flips,0)*350 my=300+awinkel(flips,1)*250 LockBuffer For steps=1 To 500 For winkel#=1 To 360 Step 0.5 If Ausdehnung(winkel#)=1 Then rgb=ReadPixelFast( MX+awinkel(winkel#,0)*steps,MY+awinkel(winkel#,1)*steps ) If (rgb And $FF0000)/$10000<>255 And (rgb And $FF00)/$100<>255 And (rgb And $FF)=0 Then If 255-steps/2<=0 Then ausdehnung(winkel*2)=0 If MX+awinkel#(winkel#,0)*steps<=000 Then ausdehnung(winkel)=0 If MX+awinkel#(winkel#,0)*steps>=800 Then ausdehnung(winkel)=0 If MY+awinkel#(winkel#,1)*steps<=000 Then ausdehnung(winkel)=0 If MY+awinkel#(winkel#,1)*steps>=600 Then ausdehnung(winkel)=0 ;ÜÜÜÜÜÜÜÜÜÜÜÜ WritePixelFast MX+awinkel#(winkel#,0)*steps,MY+awinkel#(winkel#,1)*steps,(255-steps/2) Shl 16 + (255-steps/2) Shl 8 Else Ausdehnung(Winkel#)=0 End If End If Next Next UnlockBuffer flips=(flips+2) Mod 360 For steps=1 To 360 ausdehnung(steps)=1 Next Color 255,255,255 Text 400,300,"Time to render scene: "+fps+" milliseconds!" Flip ende=MilliSecs() fps=ende-start Cls Until KeyHit(1) und dein problem mit den steps: Array(3.5)=Array(4)... Ich denke, du verstehst was ich meine ![]() Um auch Kommazahlen verwenden zu können mach dein array größer, also z.B. Dim Array(359*2) und nimm die position auch mal 2 [Edit] Code: [AUSKLAPPEN] ;By Michi1988 aliaZ <jab>@(mh)
Graphics 800,600,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() AppTitle "<jab>@(mh)s Shadowexample" Const stp=2 Dim ausdehnung#(360*stp-1) Dim awinkel#(360*stp-1,1) For steps#=0 To 360*stp-1 awinkel#(steps,0)=Cos(steps#/stp) awinkel#(steps,1)=Sin(steps#/stp) Next For steps#=0 To 360*stp-1 ausdehnung#(steps)=1 Next Repeat start=MilliSecs() Color 255,0,255 Rect 600,10,200,200 Oval 100,100,100,100 Line 0,0,800,600 Line 1,0,801,600 mx=400+awinkel(flips,0)*350 my=300+awinkel(flips,1)*250 LockBuffer WritePixelFast MX,MY,$FFFF00 For steps=1 To 500 For winkel#=0 To 360*stp-1 If Ausdehnung(winkel#)=1 Then x=MX+awinkel(winkel#,0)*steps y=MY+awinkel(winkel#,1)*steps rgb=ReadPixelFast(x,y) If (rgb And $FF0000) Shr 16<>255 And (rgb And $FF00) Shr 8<>255 And (rgb And $FF)=0 Then If 255-steps/2<=0 Then ausdehnung(winkel)=0 If x<=000 Then ausdehnung(winkel)=0 If x>=800 Then ausdehnung(winkel)=0 If y<=000 Then ausdehnung(winkel)=0 If y>=600 Then ausdehnung(winkel)=0 If ausdehnung(winkel)<>0 Then WritePixelFast x,y,Int(255-steps/2) Shl 16 + Int(255-steps/2) Shl 8 Else Ausdehnung(Winkel)=0 End If End If Next Next UnlockBuffer flips=(flips+2) Mod 360 For steps=0 To 360*stp-1 ausdehnung(steps)=1 Next Color 255,255,255 Text 400,300,"Time to render scene: "+fps+" milliseconds!" ende=MilliSecs() fps=ende-start Flip Cls Until KeyHit(1) so könnte es aussehen, ich würde es aber so machen, wie Bladerunner es sagt. PS: je größer stp ist, desto genauer |
||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
- Zuletzt bearbeitet von Apocalyptic am So, Jun 13, 2004 13:56, insgesamt 3-mal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falls du die hübschen Muster meinst die entstehen: dafür müsttest du deine Vorgehensweise umkrempeln.
Prüfe für jeden Punkt auf dem screen ob er eine Sichtlinie zu der Lichtquelle hat, und wenn ja setze ihn. Nur so kannst du diese Störlinien effektiv vermeiden. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Michi1988 |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für eure Antworten, werde ich mir nun
mal genau angucken. Michi |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group