Wasserberechnung
Übersicht BlitzBasic Allgemein
denialBetreff: Wasserberechnung |
Mo, Dez 22, 2003 17:48 Antworten mit Zitat |
|
---|---|---|
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-FolieGast |
Mo, Dez 22, 2003 17:49 Antworten mit Zitat |
|
---|---|---|
Mach eine Animation in Paint. | ||
denial |
Mo, Dez 22, 2003 17:55 Antworten mit Zitat |
|
---|---|---|
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* | ||
Alu-FolieGast |
Mo, 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 |
Mo, Dez 22, 2003 17:59 Antworten mit Zitat |
|
---|---|---|
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-FolieGast |
Mo, 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 |
Mo, Dez 22, 2003 18:01 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Dez 22, 2003 18:55 Antworten mit Zitat |
|
---|---|---|
Um mal einen konstruktiven Beitrag zu schreiben:
Ich hab vor Urzeiten auch mal versucht, ein Worms-Clone zu schreiben - ist allerdings nie was geworden 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 |
Mo, Dez 22, 2003 19:19 Antworten mit Zitat |
|
---|---|---|
So, da bin ich wieder.
Hier mein kleiner Hack:Code: [AUSKLAPPEN] Graphics 800,600
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.
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 |
||
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-FolieGast |
Mo, 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. | ||
TheShadowModerator |
Mo, Dez 22, 2003 19:27 Antworten mit Zitat |
|
---|---|---|
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 |
Mo, Dez 22, 2003 22:41 Antworten mit Zitat |
|
---|---|---|
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) |
TheShadowModerator |
Mo, Dez 22, 2003 23:13 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Dez 23, 2003 0:38 Antworten mit Zitat |
|
---|---|---|
Danke an alle für die zahlreichen Antworten! Ihr habt mir sehr geholfen | ||
Triton |
Di, Dez 23, 2003 16:24 Antworten mit Zitat |
|
---|---|---|
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 ^^ |
||
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group