| |
|
|
- Seite 1 - |
|
|
Weil du immer noch nicht verständlich erklärt hast, was nprocs sind.
Hallo Nico,
danke für den Hinweis und den Thread hier - leider kann ich damit aber nichts anfangen da ich nicht wissen kann, was Du nicht verstehst.
Vlt. kannst Du mir unter Beachtung der Dokumentation [...] sagen, was Dir unklar ist.
Inline-Assembler:
|
|
|
| |
|
|
| |
|
- Seite 4 - |
|
|
Nico Madysa | |
|
| |
|
|
|
Nico Madysa | Es kläppt einfach, einfach nicht. Mit XPSE kam Mist raus. Dann änderte ich NProc in proc, Machte aus der API SetPixel die profane Prozedur und das Ganze wurde nicht nur 100-mal langsamer, sondern vor allen Dingen korrekt.
|
|
|
| |
|
|
|
| Genau, grad eben Bugfix hochlade - bitte probiere mal diesen neuen - ich poste gleich. |
|
|
| |
|
|
|
| So, bitte mal neue Version laden: [...]
Bedenke aber auch, es ist eine Alphaversion!
Was ich gesehen habe an Deinem Mandelbrot, dass Du überall von einer automatischen Konvertierung der Variablentypen Float und Long ausgehst - aber ganz im gegenteil! Du kannst nicht x!=&getTickCount, musst x!=float(&getTickCount), kannst auch nicht test(1,2,3) bei parameters a!,b!,c! sondern musst test(1.0,2.0,3.0) schreiben!
Eine autom.Konvertierung zwischen Long und Float und zurück hatte ich oben aber schon angedacht, ich denke wäre hilfreich!
Jedenfalls, wenn etwas nicht funktioniert, dann wäre ich dankbar wenn Du das postest, damit ich Fehler im XPSE ausschliessen kann. |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Nico Madysa | Wird erledigt!
Das mit der Typumwandlung wusste ich nicht. Ich werde noch mal alles durchsehen und dir Rapport erstatten. |
|
|
| |
|
|
|
Nico Madysa | Habe jetzt die Typenumwandlung so gut wie möglich eingebaut. Jetzt sieht das Bild schon nach Apfelmännchen aus -- aber so richtig äquivalent sind die Bilder immer noch nicht. :/ KompilierenMarkierenSeparieren {$cleq}
{Farbe
nproc Farbe
parameters ca!,cb!
var za! = 0.0 : var zb! = 0.0
var n& = 0 : var tmp! = 0.0
repeat
n& = n& + 1
tmp! = za!
za! = Sqr(za!) - Sqr(zb!) + ca!
zb! = (2.0 * tmp! * zb!) + cb!
tmp! = Sqrt(Sqr(za!) + Sqr(zb!))
until (n& >= 255) or (tmp! > 2.0)
var f& = n& int(255.0 * (1.0 - float(n&) / 255.0))
return RGB(f&,f&,f&)
endproc
{Male
nproc Male
parameters x1&,y1& , genau&
declare xi&,yi&
x1& = xi& + 2 * genau&
y1& = yi& + genau&
whileloop (0 - genau&),genau&
yi& = &loop
whileloop (0 - 2) * genau&,genau&
xi& = &loop
SetPixel(%hDC,x1& + xi&,y1& + yi&,Farbe(float(xi&) / float(genau&),float(yi&) / float(genau&)))
SetPixel x1& + xi&,y1& + yi&,Farbe(float(xi&) / float(genau&),float(yi&) / float(genau&))
EndWhile
EndWhile
endproc
cls
Male(200,200 , 100)
waitinput
end
PS: Wenn ich fehlerhafterweise schreibe: KompilierenMarkierenSeparieren giebt XPSE witzigerweise aus, ich habehe versucht, String und Float z verknüpfen. |
|
|
| |
|
|
|
| Ich sehe da auf jedenfall noch ein Bug bei Freizeichen vor Minuszeichen, bin bei! |
|
|
| |
|
|
|
Nico Madysa | Herrje, immer dieses Geschmeiß!
|
|
|
| |
|
|
|
| Mit aktueller Version [...] bitte nochmal testen.
Übrigens: Farbe(float(xi&) / float(genau&),float(yi&) / float(genau&)) aus einer proc heraus garnicht nötig, die Parameter von proc an nproc werden automatisch immer in den richtigen Typ gebracht wie mit Parameters in der nProc deklariert. Farbe(xi&/genau&,yi&/genau&) reicht.
Bedenke aber, Float- und Stringparameter sind um ein Vielfaches langsamer als Long, schnellstes Mandelbrot nur mit Long. |
|
|
| |
|
|
|
Nico Madysa | Kompiliere ich den Kode ohne Änderung erneut, so kommt exakt dasselbe heraus. Folge ich hingegen deinem Hinweise (float an entsprechenden Stellen entfernen), so kommt nur Blödsinn raus. |
|
|
| |
|
|
|
| Probiere mal bitte diese neue Version: [...] . Habe noch einen Fehler bei Minus gefunden, kannst Du den Rechenfehler finden? |
|
|
| |
|
|