| |
|
|
Julian Schmidt | Hey, Yo versuche gerade el Mandelbrotmenge con XProfan para dibujar.
El Formel a Bildung el Mandelbrotmenge es
C es hier para una komplexe Zahl. Como geb Yo el en XProfan a? Pensé me zuerst el el Betrag de C igual el Longitud des Verktors es. Ergo igual Wurzel(Realteil(c)^2+Imaginärteil(c)^2) Dies scheint sólo no a trabajo.
Def !CXMin -2.2
Def !CXMax 1.2
Def !CYMin -1.5
Def !CYMax 1.5
Def &Iterationen 20
Windowstyle 24
Título de la ventana "Mandelbrotmenge"
Ventana 50,100 - 400, 300
Declarar CX!, CY!, CX2!, CY2!, Z!
Declarar LX&, LY&
Declarar IC&, ColIC&
whileloop 0, width(%hwnd)
LX&=&bucle
CX2!=CX!
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claro LY&
whileloop 0,height(%hwnd)
LY&=&bucle
CY2!=CY!
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claro IC&,Z!
whileloop &Iterationen
Z!=Sqr(Z!)+Sqrt(Sqr(CX2!)+Sqr(CY2!))' ZN+1=ZN+Complex(CX,CY)
IC&=&bucle
Case Z!>4 : romper
EndWhile
ColIC&=(IC&/&Iterationen)*255
SetPixel LX&,LY&,RGB(ColIC&,ColIC&,ColIC&)
Endwhile
Endwhile
waitinput
Saludo |
|
|
| |
|
|
|
Julian Schmidt | |
|
| |
|
|
|
Georg Teles | Oha, du gräbst sí tief, hätte Yo el Höhere Mathematik no vernachlässigt sería Yo tal vez helfen puede xP sry no Concepto |
|
|
| |
|
|
|
Paul Glatz |
Def !CXMin -2.2
Def !CXMax 1.2
Def !CYMin -1.5
Def !CYMax 1.5
Def &Iterationen 100
Windowstyle 24
Título de la ventana "Mandelbrotmenge"
Ventana 50,100 - 400, 300
Declarar CX!, CY!, CX2!, CY2!, x!, x2!, y!
Declarar LX&, LY&
Declarar IC&, ColIC&
whileloop 0, width(%hwnd)
LX&=&bucle
CX2!=CX!
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claro LY&
whileloop 0,height(%hwnd)
LY&=&bucle
CY2!=CY!
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claro IC&, x!, x2!, y!
whileloop &Iterationen
SetText %hwnd,str$(&bucle)
x2! = x! * x! - y! * y! + cx2!
y! = 2 * x! * y! + cy2!
x! = x2!
IC& = &bucle
If (x! * x! + y! * y! > 4)
Romper
EndIf
EndWhile
ColIC&=(IC&/&Iterationen)*255
SetPixel LX&,LY&,RGB(ColIC&,ColIC&,ColIC&)
Endwhile
Endwhile
waitinput
|
|
|
| |
|
|
|
Julian Schmidt | Klappt!
|
|
|
| |
|
|
|
Paul Glatz | Hier veces algo größer
|
|
|
| |
|
|
|
Julian Schmidt | Anderes Farbschema
Def !CXMin -2.2
Def !CXMax 1.2
Def !CYMin -1.5
Def !CYMax 1.5
Def &Iterationen 50
Windowstyle 24
Título de la ventana "Mandelbrotmenge"
Ventana 50,100 - 400, 300
Declarar CX!, CY!, x!, x2!, y!
Declarar LX&, LY&
Declarar IC&
whileloop 0, width(%hwnd)
LX&=&bucle
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claro LY&
whileloop 0,height(%hwnd)
LY&=&bucle
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claro IC&, x!, x2!, y!
whileloop &Iterationen,0,-1
x2! = x! * x! - y! * y! + cx!
y! = 2 * x! * y! + cy!
x! = x2!
IC& = &bucle
If (x! * x! + y! * y! > 4)
Romper
EndIf
EndWhile
SetPixel LX&,LY&,RGB((LX&/width(%hwnd))*256,(LX&/width(%hwnd))*256,IC& | (IC& << 8))
Endwhile
Endwhile
waitinput
|
|
|
| |
|
|
|
Paul Glatz | Andere Farben
Def !CXMin -2.2
Def !CXMax 1.2
Def !CYMin -1.5
Def !CYMax 1.5
Def &Iterationen 100
Windowstyle 24
Título de la ventana "Mandelbrotmenge"
Ventana 50,100 - 400, 300
Declarar CX!, CY!, CX2!, CY2!, x!, x2!, y!
Declarar LX&, LY&
Declarar IC&, ColIC&
whileloop 0, width(%hwnd)
LX&=&bucle
CX2!=CX!
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claro LY&
whileloop 0,height(%hwnd)
LY&=&bucle
CY2!=CY!
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claro IC&, x!, x2!, y!
whileloop &Iterationen
x2! = x! * x! - y! * y! + cx2!
y! = 2 * x! * y! + cy2!
x! = x2!
IC& = &bucle
If (x! * x! + y! * y! > 4)
Romper
EndIf
EndWhile
If IC& = &Iterationen
SetPixel LX&,LY&,0
Más
ColIC&=((&Iterationen - IC&)/&Iterationen)*360
SetPixel LX&,LY&,hsv(ColIC&,1,1)
EndIf
Endwhile
EndWhile
Waitinput
Proc hsv
Parámetros h!,s!,v!
Var hi% = h!/60
Var f! = ((h!/60) - hi%)
Var p! = V!*(1-S!)
Var q! = V!*(1-S!*f!)
Var t! = V!*(1-S!*(1-f!))
Select hi%
CaseOf 1
Volver rgb(q!*255,v!*255,p!*255)
CaseOf 2
Volver rgb(p!*255,v!*255,t!*255)
CaseOf 3
Volver rgb(p!*255,q!*255,v!*255)
CaseOf 4
Volver rgb(t!*255,p!*255,v!*255)
CaseOf 5
Volver rgb(V!*255,p!*255,q!*255)
Otherwise
Volver rgb(v!*255,t!*255,p!*255)
EndSelect
ENDPROC
|
|
|
| |
|
|
|
Georg Teles | Sieht super de, klasse |
|
|
| |
|
|
|
p.specht
| Versuche gerade, el Mandelbrot-Progi el Herren Schmid y Glatz mittels xpse algo Dampf a hacer. Aus vielen Fehlern gelernt, hier una halbwegs funktionierendes Teil (Anmerkungen en el nächsten Contribución). ' -------------------------------------------------------- {$cleq}
Windowstyle 24:Título de la ventana "Mandelbrot-Menge" cls 'Window (%maxx-640)/2,(%maxy-480)/2 - 640,480 'Window 0,0-%maxx,%maxy-42 declarar cxmin!,cxmax!,cymin!,cymax!,iter&,tm&,ans&,zoom!,i&
zoom!=0.7 whileloop 10:i&=&loop zoom!=zoom!*1.3333 CXMin!=-2.2 /zoom! CXMax!= 1.2 /zoom! CYMin!=-1.5 /zoom! CYMax!= 1.5 /zoom! iter&=255 tm&=&gettickcount ans&=Mandel(cxmin!,cxmax!,cymin!,cymax!,iter&) tm&=&gettickcount-tm& locate 1,1:imprimir format$("#0.0000 sec ",tm&/1000); waitinput 10 caso (%key=27) or (%key=2):end Endwhile waitinput 60000 end
nproc Mandel parámetros cxmin!,cxmax!,cymin!,cymax!,iter& Declarar CX!,CY!,x!,x2!,y!,tmp!,LX& Declarar LY&,IC&,col&,w&,hddc&,xd!,yd! w&=width(hwnd) hddc& = ~GetWindowDC( %hWnd ) xd! = CXMax! - CXMin! yd! = CYMax! - CYMin!
whileloop 0,w& LX&=&loop CX! = CXMin! ' f!=float(l&), Float2Largo simplemente l&=long(f!) tmp!= float(LX&) / float(w&) cx!=cx! + tmp! * xd! LY&=0 whileloop 0,height(%hwnd) LY&=&loop CY!=CYMax!-(float(LY&)/float(height(%hwnd)))*yd! IC&=0 x!=0 x2!=0 y!=0 whileloop Iter&,0,-1 IC& = &loop x2! = sqr(x!) - sqr(y!) + cx! y! = 2.0 * x! * y! y! = y! + cy! x! = x2! If (sqr(x!)+sqr(y!)) > 4.0 Romper EndIf EndWhile col&=IC&*ic&*ic&*ic& 'col&=RGB( long((float(LX&)/float(width(%hwnd))) )*256, long(float(LX&)/float(width(%hwnd)))*256, IC& | (IC& << 8)) 'col& = RGB(IC&,IC&,IC& | (IC& << 8) ) 'sw SetPixel(%hdc,LX&,LY&,col&) Endwhile Endwhile volver w& ENDPROC |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 31.08.2013 ▲ |
|
|
|
|
p.specht
| Viel gelernt, el Nacht durchgemacht beim debugging: %-Variable hay en xpse no (höchstens como Zierde a Systemvariablen), CLEAR funktioniert no, setpixel u.ähnl. stets sólo como Función() y el richtigen devicecontext (hdc), entonces unos pocos Fehler beim Aufruf: float() / float() * 2.0 <<komma Null!! Gruss
Cuestión a el Fachwelt: Muss Yo, el devicekontext no auch al ende killen? Welche Speicherlecks gibts allenfalls todavía? |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 01.09.2013 ▲ |
|
|
|
|
funkheld | Hmmm..., sieht bien de .
Tal vez debería uno en el nProc para XPSE veces Fließkomma-ASM reinsetzen. Interessiert mich veces como así va. Und auch el Geschwindigkeit.
Wenn Yo el ASM-Code de XPSE dafür anschaue, sehe Yo no einzigen ASM-Floatbefehl en él, Yo nehme a, que aquí simplemente el langsamen Fließkommaroutienen de Profano genommen voluntad ?
Se puede en el ASM auch el Grafikroutinen con einbauen Posesiones veces una Test gemacht, lo voluntad Rechtecke suscrito de links Oben después de rechts Unten :
declarar ende&
Ventana 20,20-750,770
Cls RGB(255,255,255)
USEP 0,1,RGB(255,0,0)
api_asm()
ende&=1
WHILE ende&
sleep 1
waitkey
ENDWHILE
nproc api_asm() {
long f=0
Largo z=500
mov ecx,0
mov eax,0
anfang:
Add eax,1
Add ecx,1
Mov f,eax
PushAll
Rectángulo(%hdc,20+f,20+f,200+f,200+f)
PopAll
cmp ecx,z
jb anfang
}
Gracias. Gruss |
|
|
| |
|
|