| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 4
| filter
ich habe versucht, eine oszillierende chemische reaktion nachzubauen, mit setPixel und 2d arrays geht das aber nur recht langsam und auf eine kleine matrix beschränkt. (ca. 30x30px). meine frage - wie kann ich diesen algorithmus mit filtern anwenden statt mit arrayberechnung und setPixel? merci *.fla anbei. Geändert von renaissance (27-10-2005 um 10:40 Uhr) |
| | |
| | #2 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
visuell sieht das einbisschen aus wie ein PerlinNoise ( mit vielen Oktaven und Turbulence), und dann mit einem Threshold filter gesiebt. Aber keine Ahnung was dein Algorithmus genau macht, kanst du das kurz erläutern? |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 4
| algor
ja, das anfangsstadium ist quasi perlin noise. ..es geht um eine oszillierende reaktion (belusov-zhabotinski nach den entdeckern), bei der aus einem 'chaotischen' anfangszustand eine art oszillierende stabilität entsteht. (spiralen) ..es braucht einige loops bis das im beispiel deutlich wird. im anfangstadium des prozesses hat jeder punkt einen zufallswert zwischen 1 und n. n farbwerte werden aus einer palette entnommen und dem punkt im anfangszustand (nach wert) zugeordnet. jeder punkt kann also 1 - n verschiedene farbwerte annehmen. für die transformation 'onEnterFrame' gilt: punkte mit wert 1 sind 'gesund' punkte mit wert n sind 'krank' punkte mit werten zwischen 1 und n sind 'infiziert' *punkte mit wert 1 ändern ihren wert nach formel: Math.floor(at/k1) + Math.floor(bt/k2) + 1; wobei k1=2;k2=3 konstante sind und at = anzahl der umgebenden punkte die 'infiziert' sind bt = anzahl der umgebenden punkte die 'krank' sind *punkte mit wert n ändern ihren wert zu 1 - 'von krank zu gesund' *punkte mit werten zwischen 1 und n ändern ihren wert nach formel: Math.floor(S/(at + bt-1)) + g; wobei g die 'verbreitungs'konstante ist, at/bt wie vorher und S = summe aller werte der 3x3 matrix d.h. punkt und alle umliegenden punkte in 2D. führen die zwei letzten regeln zu einem wert >n, wird der neue wert auf n gesetzt. ..der convolution filter dient hier nur zum blurren. Geändert von renaissance (27-10-2005 um 14:41 Uhr) |
| | |
| | #4 (permalink) |
| x39 Registriert seit: Oct 2004 Ort: St.Gallen, Schweiz
Beiträge: 1.261
|
hm ja, ich seh schon, das tönt alles sehr nach CELLULAR AUTOMATA. somit denke ich, dass grossräumige Filterberechnungen mit Flash 8 kaum was bringen, weil der belusov-zhabotinski ist schon ein sehr spezifischer Algorithmus. Aber ich könnte auch total falsch liegen... |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Sep 2004 Ort: Spain/Ibiza
Beiträge: 942
|
klaubs auch net aber die filter function ist ja beschrieben kuk vileicht kanst was damit anfangen ColorMatrixFilter redResult = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4] greenResult = a[5] * srcR + a[6] * srcG + a[7] * srcB + a[8] * srcA + a[9] blueResult = a[10] * srcR + a[11] * srcG + a[12] * srcB + a[13] * srcA + a[14] alphaResult = a[15] * srcR + a[16] * srcG + a[17] * srcB + a[18] * srcA + a[19] ConvolutionFilter dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1.... src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias
__________________ Languages : (in the order of knowledge/preference) Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;) |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 4
| cellular
ich fürchte, das versteh ich nicht ganz. kannst du das erläutern? wofür stehen die variablen? ich nutze flash nur ganz selten und hab das filter prinzip wohl noch nicht so verstanden. wie kann ich mit dem filter die werte der punkte um einen zentralen punkt checken und den neuen farbwert setzen? |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Sep 2004 Ort: Spain/Ibiza
Beiträge: 942
|
ColorMatrixFilter du gibst ihm ein array mit 20 werten 5 fur jeden color (R G B A) jezt hast ein punkt mit der farbe 0x AA BB CC DD damit es nicht zu einfach ist ist der array RGBA und der color ARGB in flash ![]() also wir haben den punkt jetzt AA ist der alpha wert der neu wert ist Array[15] * BB + Array[16] * CC + Array[17] * DD + Array[18] * AA + Array[19] ist das grosser als 255 wird es auf 255 gesetzt das dan fur alle 3 farben + alpha und du hast den neuen color kanst keine nachbar punkte beruksichtigen ! das konte eventuel mit dem ConvolutionFilter gehen hab aber keine ahnung wie der functioniert ! ![]() da kanst belibig grosse Matrixen angeben z.b 3x3 [1][2][1] [2][4][2] [1][2][1] das ist der "Basic Smooth: 3x3" filter solte von grafik programen bekant sein aber wie gesag wie das genau functioniert keine ahnung
__________________ Languages : (in the order of knowledge/preference) Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;) |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 4
|
vielen dank - ich probier mal noch bisschen rum. aber - in dieser (belusov) transformation beruht die änderung der punktfarbe auf dem aktuellen zustand der nachbarpunkte. d.h. es muss für alle punkte im bitmaparray erst der neue wert gefunden werden bevor der (ausgangsbild) array vom neuen überschrieben werden kann. bei änderung von nur einzelnen werten (fortlaufend) würde es nicht funktionieren. das ist wohl also mit filter - so wie ich es bisher verstehe nicht zu machen.
|
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |