3D-Stereogramm Fireworks

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Smily

Betreff: 3D-Stereogramm Fireworks

BeitragSa, Aug 25, 2007 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi,
Ich habe vor einer Weile die Beispielcodes von BMax durchstöbert und bin auf "Fireworks" von "simonh" gestossen.

Naja der Code war m.E. ein kleines bisschen unsauber gecodet ^^ also habe ich den Code als Grundlage dafür genommen das ganze nochmal komplett neu aufzusetzen...

Gesagt, getan.. nach ca 2 Stunden war ich fertig. Dann noch einen Hintergrund rein und das Ganze sah schon fast perfekt aus.

Ich hatte etwas langeweile und mir überlegt, was ich darran noch machen könnte. Und DA viel mir eine Alte Rot-Cyan 3D-Brille auf, die ich noch auf dem Schreibtich rumliegen hatte ^^
Ein paar Zeilen geändert und voila - das Ergebniss war Faszinierend ^^

Ihr müsst das Ganze mit einer Rot-Cyan 3D-Brille betrachten. Die Cyanseite am Rechten auge (Folglich die Rote am Linken Wink )

Code: [AUSKLAPPEN]
' Fireworks by simonh (si@si-design.co.uk)
' Recode by Smily0412
Strict

Type Tspark
   Global list:TList =CreateList()
   Field Link:TLink

   Field x:Float
    Field y:Float
   Field z:Float
   Field vy:Float
   Field xd:Float
   Field yd:Float
   Field zd:Float
   Field r:Int
   Field g:Int
   Field b:Int
   Field alpha:Float

   Function createexp(px, py, pz, count)
      Local spark:TSpark
      Local cr = Rand(255)
      Local cg = Rand(255)
      Local cb = Rand(255)
      For Local tmp=1 To count
         spark = New Tspark
         spark.x = px
         spark.y = py
         spark.z = pz
         spark.r = cr
         spark.g = cg
         spark.b = cb
      Next
   End Function

   Method New()
         Link = List.AddLast(Self)
         Local speed:Float = 0.1
         Local ang1:Float = Rnd!(360)
         Local ang2:Float = Rnd!(360)
         r=Rand(255)
         g=Rand(255)
         b=Rand(255)
         alpha=1
         xd=Cos(ang1)*Cos(ang2)*speed
         yd=Cos(ang1)*Sin(ang2)*speed
         zd=Sin(ang1)*speed
   End Method

   Method del()
      link.remove()
      link = Null
   End Method

   Method Update()
      x=x+xd*10.0
      y=y+yd*10.0
      z=z+zd*10.0
      y=y+vy#
      vy=vy+0.02
      alpha=alpha-0.01
   End Method
End Type
Global width=1280
Global height=1024
Graphics width, height,60
SetBlend LIGHTBLEND

Local spark:Tspark
Local sparki:TImage=LoadImage("spark.png")
Local back:TImage = LoadImage("back.jpg")
Local posx, posy, posz
Local tmp:Int
Local drawx, drawy,e:Float
Local cz
While Not KeyHit(KEY_ESCAPE)
   If Not Rand(0,20)
      posx = Rand(-100,100)
      posy = Rand(-100,100)
      posz = Rand(50,350)
      TSpark.createexp(posx,posy,posz,2000)
   EndIf

   Cls
   SetColor 255,255,255
   SetAlpha 1
   TileImage back,50,50
   For spark = EachIn spark.list
      If spark.alpha>0
         spark.update         
         drawx=(width/2.0)+((spark.x/spark.z)*500)
         drawy=(height/2.0)+((spark.y/spark.z)*500)
         e = 3- (spark.z-50)/100.0
         SetAlpha spark.alpha
         SetScale 20/spark.z,20/spark.z
         SetColor 0,spark.g,spark.b
         DrawImage sparki,drawx-e,drawy
         SetColor spark.r,0,0
         DrawImage sparki,drawx+e,drawy
      Else
         spark.del
      EndIf
   Next
   Flip

Wend


Bilder:
Arrow http://phpprogger.ph.funpic.de/uploads/back.jpg
Arrow http://phpprogger.ph.funpic.de/uploads/spark.png


Viel Spaß,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

#Reaper

Newsposter

BeitragSo, Aug 26, 2007 1:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr schön Very Happy

Zum Glück kann ich es noch mit meiner rund 10 Jahre alten PappBrille ansehen ;D
Auch wenn ich die Umdrehen musste^^


Aber btw: Ist es eigentlich normal, dass man trotz Brille noch etwas von den beiden Farben neben einem Spark sieht..? (Kann ja auch an meiner Brille liegen)


Ansonsten ruckelt es nur leider manchmal etwas Sad
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Smily

BeitragSo, Aug 26, 2007 1:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Zum Glück kann ich es noch mit meiner rund 10 Jahre alten PappBrille ansehen ;D
Auch wenn ich die Umdrehen musste^^

Aber btw: Ist es eigentlich normal, dass man trotz Brille noch etwas von den beiden Farben neben einem Spark sieht..? (Kann ja auch an meiner Brille liegen)

Das kann vorkommen, wenn die Sparks sehr "nah" rankommen. Du kannst ja mal folgendes Probieren:
erstelle ein kleies prog, in dem ein Rotes (255,0,0) und daneben ein Cyan (0,255,255) kreis angezeigt wird.
Wenn deine Brille korrekt ist, müsste, wenn du mit einem auge durch eine farbe schaust eine der beiden farben auf dem Bildschirm fast komplett verschwinden.

(was meinst du mit brille umdrehen? Rechts Cyan und Links Rot ist soweit ich weis eigentlich der standart oO)

Zitat:
Ansonsten ruckelt es nur leider manchmal etwas


such mal nach der Zeile
Code: [AUSKLAPPEN]
      TSpark.createexp(posx,posy,posz,2000)

und spiele ein wenig mit der Zahl rum... Standartmäßig wars bei mir auf 500.. kurz vorm uppen hatte ich mal versucht, wie weit ich meinen pc ausreizen, dass es noch flüssig läuft ^^, ich hatte es dann wohl vergessen wieder zurückzuändern.

Gruß, Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group