| |
|
|
Julian Schmidt | Hey, je versuche justement qui Mandelbrotmenge avec XProfan trop zeichnen.
qui Formel zur Bildung qui Mandelbrotmenge ist
C steht ici pour une komplexe numéro. comment geb je qui dans XProfan à? J'ai pensé mir d'abord cela qui Betrag de C juste qui Longueur des Verktors ist. Ergo juste Wurzel(Realteil(c)^2+Imaginärteil(c)^2) ca scheint seulement pas trop marcher.
Def !CXMin -2.2
Def !CXMax 1.2
Def !CYMin -1.5
Def !CYMax 1.5
Def &Iterationen 20
Windowstyle 24
Titre de la fenêtre "Mandelbrotmenge"
Fenêtre 50,100 - 400, 300
Déclarer CX!, CY!, CX2!, CY2!, Z!
Déclarer LX&, LY&
Déclarer IC&, ColIC&
whileloop 0, width(%hwnd)
LX&=&loop
CX2!=CX!
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claire LY&
whileloop 0,height(%hwnd)
LY&=&loop
CY2!=CY!
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claire IC&,Z!
whileloop &Iterationen
Z!=Sqr(Z!)+Sqrt(Sqr(CX2!)+Sqr(CY2!))' ZN+1=ZN+Complex(CX,CY)
IC&=&loop
Cas Z!>4 : pause
Endwhile
ColIC&=(IC&/&Iterationen)*255
SetPixel LX&,LY&,RGB(ColIC&,ColIC&,ColIC&)
Endwhile
Endwhile
waitinput
Salut |
|
|
| |
|
|
|
Julian Schmidt | |
|
| |
|
|
|
Georg Teles | Oha, du gräbst oui tief, hätte je qui Höhere mathématique pas vernachlässigt serait je peut-être aider peut xP sry aucun concept |
|
|
| |
|
|
|
Paul Glatz |
Def !CXMin -2.2
Def !CXMax 1.2
Def !CYMin -1.5
Def !CYMax 1.5
Def &Iterationen 100
Windowstyle 24
Titre de la fenêtre "Mandelbrotmenge"
Fenêtre 50,100 - 400, 300
Déclarer CX!, CY!, CX2!, CY2!, x!, x2!, y!
Déclarer LX&, LY&
Déclarer IC&, ColIC&
whileloop 0, width(%hwnd)
LX&=&loop
CX2!=CX!
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claire LY&
whileloop 0,height(%hwnd)
LY&=&loop
CY2!=CY!
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claire IC&, x!, x2!, y!
whileloop &Iterationen
SetText %hwnd,str$(&loop)
x2! = x! * x! - y! * y! + cx2!
y! = 2 * x! * y! + cy2!
x! = x2!
IC& = &loop
Si (x! * x! + y! * y! > 4)
Pause
EndIf
Endwhile
ColIC&=(IC&/&Iterationen)*255
SetPixel LX&,LY&,RGB(ColIC&,ColIC&,ColIC&)
Endwhile
Endwhile
waitinput
|
|
|
| |
|
|
|
Julian Schmidt | Klappt!
|
|
|
| |
|
|
|
Paul Glatz | ici la fois quelque chose 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
Titre de la fenêtre "Mandelbrotmenge"
Fenêtre 50,100 - 400, 300
Déclarer CX!, CY!, x!, x2!, y!
Déclarer LX&, LY&
Déclarer IC&
whileloop 0, width(%hwnd)
LX&=&loop
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claire LY&
whileloop 0,height(%hwnd)
LY&=&loop
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claire IC&, x!, x2!, y!
whileloop &Iterationen,0,-1
x2! = x! * x! - y! * y! + cx!
y! = 2 * x! * y! + cy!
x! = x2!
IC& = &loop
Si (x! * x! + y! * y! > 4)
Pause
EndIf
Endwhile
SetPixel LX&,LY&,RGB((LX&/width(%hwnd))*256,(LX&/width(%hwnd))*256,IC& | (IC& << 8))
Endwhile
Endwhile
waitinput
|
|
|
| |
|
|
|
Paul Glatz | autre Farben
Def !CXMin -2.2
Def !CXMax 1.2
Def !CYMin -1.5
Def !CYMax 1.5
Def &Iterationen 100
Windowstyle 24
Titre de la fenêtre "Mandelbrotmenge"
Fenêtre 50,100 - 400, 300
Déclarer CX!, CY!, CX2!, CY2!, x!, x2!, y!
Déclarer LX&, LY&
Déclarer IC&, ColIC&
whileloop 0, width(%hwnd)
LX&=&loop
CX2!=CX!
CX!=!CXMin+(LX&/width(%hwnd))*(!CXMax-!CXMin)
Claire LY&
whileloop 0,height(%hwnd)
LY&=&loop
CY2!=CY!
CY!=!CYMax-(LY&/height(%hwnd))*(!CYMax-!CYMin)
Claire IC&, x!, x2!, y!
whileloop &Iterationen
x2! = x! * x! - y! * y! + cx2!
y! = 2 * x! * y! + cy2!
x! = x2!
IC& = &loop
Si (x! * x! + y! * y! > 4)
Pause
EndIf
Endwhile
Si IC& = &Iterationen
SetPixel LX&,LY&,0
D'autre
ColIC&=((&Iterationen - IC&)/&Iterationen)*360
SetPixel LX&,LY&,hsv(ColIC&,1,1)
EndIf
Endwhile
Endwhile
Waitinput
Proc hsv
Paramètres 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
Retour rgb(q!*255,v!*255,p!*255)
CaseOf 2
Retour rgb(p!*255,v!*255,t!*255)
CaseOf 3
Retour rgb(p!*255,q!*255,v!*255)
CaseOf 4
Retour rgb(t!*255,p!*255,v!*255)
CaseOf 5
Retour rgb(V!*255,p!*255,q!*255)
Otherwise
Retour rgb(v!*255,t!*255,p!*255)
EndSelect
ENDPROC
|
|
|
| |
|
|
|
Georg Teles | Sieht super aus, super |
|
|
| |
|
|
|
p.specht
| Versuche justement, dem Mandelbrot-Progi qui Herren Schmid et Glatz mittels xpse quelque chose vapeur trop faire. Aus vielen Fehlern gelernt, ici un halbwegs funktionierendes partie (Anmerkungen im prochain Beitrag). » -------------------------------------------------------- {$cleq}
Windowstyle 24:Titre de la fenêtre "Mandelbrot-Menge" cls 'Window (%maxx-640)/2,(%maxy-480)/2 - 640,480 'Window 0,0-%maxx,%maxy-42 declare 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:imprimer format$("#0.0000 sec ",tm&/1000); waitinput 10 cas (%key=27) or (%key=2):end Endwhile waitinput 60000 end
nproc Mandel parameters cxmin!,cxmax!,cymin!,cymax!,iter& Déclarer CX!,CY!,x!,x2!,y!,tmp!,LX& Déclarer 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&), Float2Long simple 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! Si (sqr(x!)+sqr(y!)) > 4.0 Pause 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 return 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, qui nuit durchgemacht beim debugging: %-Variable gibt es dans xpse pas (au maximum comme Zierde trop Système), CLEAR funktioniert pas, setpixel u.ähnl. stets seulement comme Funktion() et dem richtigen devicecontext (hdc), ensuite encore un paire faute beim Aufruf: float() / float() * 2.0 <<komma zéro!! Gruss
Frage à qui Fachwelt: Muss Je l' devicekontext pas aussi au sommet killen? quelle Speicherlecks gibts allenfalls encore? |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 01.09.2013 ▲ |
|
|
|
|
funkheld | Hmmm..., sieht bien aus .
peut-être sollte on dans qui nProc pour XPSE la fois Fließkomma-ASM reinsetzen. intéressé mich la fois comme avec cela allez. et aussi qui Geschwindigkeit.
si je mir den ASM-Code de XPSE pour anschaue, vois je keinen einzigen ASM-Floatbefehl y, je prends à, que voici simple qui langsamen Fließkommaroutienen de Profan pris volonté ?
il peut dans dem ASM aussi qui Grafikroutinen avec einbauen Habe la fois un Test gemacht, es volonté Rechtecke gezeichnet de à gauche dessus à droite Unten :
declare ende&
Fenêtre 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
Long z=500
mov ecx,0
mov eax,0
anfang:
Ajouter eax,1
Ajouter ecx,1
Mov f,eax
PushAll
Rectangle(%hdc,20+f,20+f,200+f,200+f)
PopAll
cmp ecx,z
jb anfang
}
merci. Gruss |
|
|
| |
|
|