Pinsel
Übersicht

![]() |
blitzuser34Betreff: Pinsel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
schaut euch einfach folgenden Code an: Code: [AUSKLAPPEN] Graphics 400,300,32,2
AppTitle "Pinsel" Dim pinsel(50) For a=1 To 50 pinsel(a)=CreateImage(102,102) SetBuffer ImageBuffer(pinsel(a)) Color 255,255,255 Plot 51,51 For y=1 To a For x#=0 To 360 Step 0.5 newx#=Sin(x#)*y newy#=Cos(x#)*y faktorx#=255/a Color 255-y*faktorx#,255-y*faktorx#,255-y*faktorx# Plot 51+newx#,51+newy# Next Next Next SetBuffer BackBuffer() a=1 Repeat If KeyHit(1) Then End Cls Delay 100 DrawImage pinsel(a),400/2-51,300/2-51 a=a+1 If a=51 Then a=1 Flip Forever Gegen Ende sind teilweiße 2-3 Bilder gleich. Wieso? Das merkt man auch an dem "Ruckeln" gegen Ende. Blitzuser34 |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach Code: [AUSKLAPPEN] faktorx#=255.0/a denn dann gehts.
Im übrigen hoffe ich, dass du die User nicht mit so langen Berechnungszeiten gängeln willst. Bereits mit WritePixelFast sollte es so um 100mal schneller gehen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
a und y sind z.B. Interger.
Code: [AUSKLAPPEN] faktorx#=255/a sollte eher
Code: [AUSKLAPPEN] faktorx#=255.0/Float(a) heißen...
|
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich konnte es mir nicht länger ansehen. Somit hier eine etwas schnellere Variante:
Code: [AUSKLAPPEN] Graphics 400,300,32,2
AppTitle "Pinsel" Local Pinsel% Local Frame% Local Radius# Local Entfernung# Local Farbe% Local X%,Y% Pinsel=CreateImage(102,102,50) For Frame=0 To 49 Radius=Frame LockBuffer ImageBuffer(Pinsel,Frame) For Y=0 To 101 For X=0 To 101 Entfernung=Sqr((51-X)^2+(51-Y)^2) If Entfernung<Radius Then Farbe=Entfernung*255/Radius Farbe=-1-Farbe-Farbe*$100-Farbe*$10000 Else Farbe=0 End If WritePixelFast X,Y,Farbe,ImageBuffer(Pinsel,Frame) Next Next UnlockBuffer ImageBuffer(Pinsel,Frame) Next SetBuffer BackBuffer() Frame=0 Repeat If KeyHit(1) Then End Cls Delay 10 DrawImage Pinsel,400/2-51,300/2-51,Frame Frame=Frame+1 If Frame=50 Then Frame=0 Flip Forever |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ohne Delay mit Timer
und was ich ned gecheckt habe radius = frame super da kann man auch eine Var. weglassen. Hier meine Verbesserung von Hectics Verbesserung von blitzuser Code: [AUSKLAPPEN] Graphics 400,300,32,2
AppTitle "Pinsel" timer = CreateTimer(60) Local Pinsel% Local Frame% Local Radius# Local Entfernung# Local Farbe% Local X%,Y% Pinsel=CreateImage(102,102,50) For Radius=0 To 49 LockBuffer ImageBuffer(Pinsel,Radius) For Y=0 To 101 For X=0 To 101 Entfernung=Sqr((51-X)^2+(51-Y)^2) If Entfernung<Radius Then Farbe=Entfernung*255/Radius Farbe=-1-Farbe-Farbe*$100-Farbe*$10000 Else Farbe=0 End If WritePixelFast X,Y,Farbe,ImageBuffer(Pinsel,Radius) Next Next UnlockBuffer ImageBuffer(Pinsel,Radius) Next SetBuffer BackBuffer() Frame=0 Repeat If KeyHit(1) Then End DrawImage Pinsel,400/2-51,300/2-51,Frame Frame=Frame+1 If Frame=50 Then Frame=0 Flip(0) :Cls WaitTimer(timer) Until KeyHit(1) |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, stimmt, das Delay habe ich komplett ignoriert. Ist so auf jeden Fall besser. Das Radius=Frame habe ich so gelassen, da in den speziellen Falle beides die gleichen Werte haben aber in anderen Fällen nicht unbedingt sein müssen. So könnte man auch Radius=Frame*2 machen, was zwar wenig Sinn ergibt, dafür aber die Variablennamen so eingesetzt werden wie sie auch heissen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
achso, dass habe ich garnicht bedacht. ![]() |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
blitzuser34 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code sollte eh nicht im Spiel ausgeführt werden. Deshalb musste er nicht sehr schnell sein. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sollte ja keine Anmache sein. Doch dein Code erzeugt maximale Farbabstufungen wie groß der aktuelle Radius ist. In deinem Fall dann eben 50 Farbabstufungen anstelle 255 möglichen. Aus welchen Grund dann sichtbare Treppeneffekte auftretten. Wie wichtig nun ein sauberes Image ist, bleibt ja dir überlassen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
blitzuser34 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, die Treppeneffekte habe ich gesehen. Fand sie selber nicht sehr schön.
Der Code von dir ist schon besser. Außerdem will ich eigentlich die Werte als Float zwischen 0 und 1 ausgeben, statt zu zeichnen: Code: [AUSKLAPPEN] Graphics 400,300,32,3
AppTitle "Pinsel" timer = CreateTimer(60) Local Pinsel% Local Frame% Local Radius# Local Entfernung# Local Farbe% Local X%,Y% Pinsel=CreateImage(102,102,50) fileout=WriteFile("fileout.dat") For Radius=0 To 49 LockBuffer ImageBuffer(Pinsel,Radius) For Y=0 To 101 For X=0 To 101 Entfernung=Sqr((51-X)^2+(51-Y)^2) If Entfernung<Radius Then Farbe=Entfernung*255/Radius Farbe=-1-Farbe-Farbe*$100-Farbe*$10000 Else Farbe=0 End If rgb=Farbe r# = (rgb And $FF0000) / $10000 r#=r#*0.003921568627 WriteFloat fileout,r# Next Next UnlockBuffer ImageBuffer(Pinsel,Radius) Next CloseFile fileout |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group