Wasserberechnung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

denial

Betreff: Wasserberechnung

BeitragMo, Dez 22, 2003 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.. Ich möchte in BlitzBasic 2D Wasser zeichnen, welches ein bisschen auf- und ab schwappt, die wellen sich also etwas bewegen, so etwa wie in Worms 2, fals das jemand kennt.
Ich habe es schon mit mehreren Sinus/Cosinus Berechnungen probiert, aber den richtigen Ansatz bekam ich nicht so raus.

Also ein theoretischer Ansatz, oder ein kleines Beispiel wäre echt nett, danke!

DenIal
 

Alu-Folie

Gast

BeitragMo, Dez 22, 2003 17:49
Antworten mit Zitat
Mach eine Animation in Paint.
 

denial

BeitragMo, Dez 22, 2003 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein das geht definitiv nicht. Es muss berechnet werden für meine Zwecke. Also zur Vorstellung: Man soll das Wasser "von der Seite" sehen.. Gute Erklärung*hust* Wink
 

Alu-Folie

Gast

BeitragMo, Dez 22, 2003 17:57
Antworten mit Zitat
Du kannst jeden Plot der Linie einzelnd berechnen. Den ersten so, und den nächsten dann genau daneben, einen weiter unten oder einen weiter oben.
 

IonPainter

BeitragMo, Dez 22, 2003 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
denial, da du neu bist klär ich dich jetzt mal auf:

alu ist der mieseste spammer hier, hat von 99,9% der dinge über die er schreibt keine ahnung, und spielt sich auf wie sonst einer

ignoriere seine posts einfach (gehe nicht drauf ein)

mfg, ion
 

Alu-Folie

Gast

BeitragMo, Dez 22, 2003 18:00
Antworten mit Zitat
ich habe ihm gesagt was er machen kann. Und du spamst

Und noch ne Idee: Nimm Lines und verteil sie, damit du nicht soviele plots hast.
 

denial

BeitragMo, Dez 22, 2003 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon 4 Antworten und keine einzige ist ernsthaft. Sorry aber dass ich jeden einzelnen Pixel rechne ist mir auch klar. Ich suche mehr nach einem Ansatz für die Sinus/Cosinus Rechnung, oder alternative Berechnungsmöglichkeiten etc.
Dennoch danke für die Antworten...
 

CodeMaster

BeitragMo, Dez 22, 2003 18:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Um mal einen konstruktiven Beitrag zu schreiben:
Ich hab vor Urzeiten auch mal versucht, ein Worms-Clone zu schreiben - ist allerdings nie was geworden Wink
Mein Vorschlag:
Zeichne in Paint ein 2x10 Pixel großes Bild, oben ganz weiß, unten blau. Dazwischen Abstufungen zwischen weiß und blau.
Dann setzt du 400 mal (bei einer Auflösung von x=800) das Bild nebeneinander, und zwar lässt du in einer entsprechenden Schleife eine "Höhenvariable" immer um eins erhöhen und errechnest daraus einen Sinuswert, welchen du zu den Y-Werten der einzelnen Wellenlinien hinzuaddierst.
Das ganze machst du insgesamt 3mal hintereinander, jeweils mit einer anderen Frequenz und einer anderen Höhe, sodass du am Ende drei Ebenen hast, auf denen die Wellen sich unterschiedlich schnell "schaukeln".
Hmm, ist ein bisschen schwer zu erklären... Ich werde mich mal dransetzen und einen kleinen Beispielcode schreiben.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

CodeMaster

BeitragMo, Dez 22, 2003 19:19
Antworten mit Zitat
Benutzer-Profile anzeigen
So, da bin ich wieder.
Hier mein kleiner Hack:Code: [AUSKLAPPEN]
Graphics 800,600
SetBuffer BackBuffer()

Global Welle
Dim WellenAnimation(3)

InitialisiereWelle()

While Not KeyDown(1)
 Cls
 ZeichneWellen
 Flip
Wend
End

Function InitialisiereWelle()
 Welle = CreateImage(2,20)
 SetBuffer ImageBuffer(Welle)
  Cls
  For x = 0 To 1
   For y = 0 To 19
    WritePixel x,y,(20-y) * 255 / 20 * $10101
   Next
  Next
 SetBuffer BackBuffer()
End Function

Function ZeichneWellen()
 For t = 1 To 3
  WellenAnimation(t) = (WellenAnimation(t) + t) Mod 360
  For x = 1 To 800 Step 2
   DrawBlock Welle,x,500+t*18+Cos(WellenAnimation(t)+x*3)*(4-t/2)*2.5
  Next
 Next
End Function
Das Beispiel ist jetzt nicht besonders schön, zeigt aber ungefähr das, was ich meine. Nach diesem Muster kannst du's ja mal probieren.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

Alu-Folie

Gast

BeitragMo, Dez 22, 2003 19:25
Antworten mit Zitat
Codemaster: Sieht gut aus, aber die berechnung kann wegfallen wenn man einfach ein Image für die Wellen nimmt.

TheShadow

Moderator

BeitragMo, Dez 22, 2003 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
schon was von sinus-welle gehört (ok in worms sind wellen bisschen anderes)

man nehme mehrere sinus-wellen und lege die übereinander (addition) - herauskommt wellenähnliches ding...

im engl. codearchiv gibts sowas soweit ich weiß - ansonsten code ich später sowas mal in 5 min und gebe den code...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

BIG BUG

BeitragMo, Dez 22, 2003 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal was aus den BB-Beispielen geklaut:
Benötigt ein Bild mit 640x480 und ist vertikal, aber das man ja leicht ändern
Code: [AUSKLAPPEN]

;
;
;
; On screen instructions where needed
; (Mouse X / Y and mouse buttons)
;
; ESC to skip to next effect
;
; ESC to quit after last effect



bitmap$="blogo.bmp"                  ; Our background bitmap
                              ; (any 640x480 .bmp piccy would do)

Graphics 640,480                  ;  Set the display resolution

Global back
back=LoadAnimImage(bitmap$,640,1,0,480)   ; Try to load the bitmap
                              ;
If Not back Then End               ; Quit if bitmap not loaded

SetBuffer BackBuffer()               ; Double buffer for a flicker free display



sine_wibble()                     ; Execute each function in turn               

End                              ; End program


Function sine_wibble()
   lop#=0
   start#=0
   amp#=1
   freq#=1
   oldx#=0
   Repeat
      Cls
      oldx#=oldx+(MouseX()-oldx)/2
      oldy#=oldy+(MouseY()-oldy)/2
      If MouseDown(2)
         amp=oldx/80+1
      End If
      If MouseDown(1)
         freq#=oldy/100+1
      End If
      start=start+freq Mod 359
      For lop=0 To 479
         DrawImage back,Sin(lop*freq+start)*(amp*40),lop,lop
      Next
      Rect oldx-7,oldy,15,1
      Rect oldx,oldy-7,1,15
      Text 10,10,"AMPLITUDE = "+amp+"  ( Mouse X  +  RMB )"
      Text 10,30,"FREQUENCY = "+freq+"  ( Mouse Y  +  LMB )"
      Flip
   Until KeyDown(1)
   Repeat
      Cls
      Flip
   Until Not KeyDown(1)
End Function
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

TheShadow

Moderator

BeitragMo, Dez 22, 2003 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()
Color 150,150,250

While Not KeyHit(1)
  Cls

  wave#=(wave#+10) Mod 360
  For i=1 To 639
    h=Sin#(wave#+i)*10+Sin#(i)*10+100
    Rect i,479-h,1,h,1
  Next
 
  Flip
Wend
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

denial

BeitragDi, Dez 23, 2003 0:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke an alle für die zahlreichen Antworten! Ihr habt mir sehr geholfen Smile

Triton

BeitragDi, Dez 23, 2003 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
will auch noch meine kleine Spielerei in diesem Zusammenhang posten, ist so ähnlich wie Shadows..

Code: [AUSKLAPPEN]

;wellen, by Triton, 23.12.2003
Graphics 640,480,16,2
SetBuffer BackBuffer()

While Not KeyDown(1)

e=e+5
If e > 360 Then e = 0

For x = e To e+GraphicsWidth() Step 1
   Color 0,Sin(e)*30+100,Sin(e)*50+100
   y = Sin(e+x)*10+Sin(e)*10
   Line x-e,y+GraphicsHeight()/2,x-e,GraphicsHeight()
Next
Flip
Cls
Wend


^^

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group