| |
|
|
- Page 1 - |
|
|
Weil du immer noch nicht verständlich erklärt hast, was nprocs sind.
Hallo Nico,
danke per 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 Documentazione [...] sagen, was Dir unklar ist.
Inline-Assembler:
|
|
|
| |
|
|
| |
|
- Page 5 - |
|
|
Nico Madysa | Keine Cambiamento. Sowie ich die Float()s aus dem Funktionsausruf entferne, wird alles bis auf die Koordinatenachsen weiß. (Exakt der obige Blödsinn.) |
|
|
| |
|
|
|
| Aber schau mal: KompilierenMarkierenSeparieren {$cle}
Gemerkt/Separiert von http://xprofan.com/thread.core?t=7915#bottom
{Farbe
nproc Farbe
parameters ca!,cb!
var za! = 0.0 : var zb! = 0.0
var n& = 0 : var tmp! = 0.0
var itera&=0
repeat
itera&+
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! = 255.0 * (1.0 - float(n&) / 255.0)
var v&=int(f!)
return RGB(v&,v&,v&)
endproc
proc Farbe2
parameters ca!,cb!
var za! = 0.0 : var zb! = 0.0
var n& = 0 : var tmp! = 0.0
var itera&=0
repeat
itera&+
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& = int(255.0 * (1.0 - (n&) / 255.0))
exitprocess(f&)
return RGB(f&,f&,f&)
endproc
{Male
proc 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(xi&/genau&,yi&/genau&)
EndWhile
EndWhile
endproc
proc Male2
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 200+x1& + xi&,y1& + yi&,Farbe2(xi&/genau&,yi&/genau&)
EndWhile
EndWhile
endproc
cls
Male(200,200 , 50)
Male2(200,200 , 50)
waitinput
end
|
|
|
| |
|
|
|
Nico Madysa | Das è, dass der Fehler in der Proc Male liegt. Ist sie profan, so corre alles wie gewünscht.
PS: Was soll eigentlich dieses itera& bewirken? |
|
|
| |
|
|
|
| Nein schau doch, die Male ist normale proc. Der Fehler entsteht in nproc farbe - aber finde den Rechenfehler nicht, bitte schau einmal. |
|
|
| |
|
|
|
Nico Madysa | Ich fasse meine Beobachtungen mal zusammen:
Eins. Beide Male-Prozeduren sind Profan. Farbe1 ist nativ, Farbe2 ist profan. Male1 und Male2 unterscheiden sich allein darin, dass die eine Farbe 1, die andere Farbe2 aufruft.
Zwei. Male1 zermatscht die Figur, während Male2 alles sauber (allerdings langsam) zeichnet.
Drei. Mache ich aus Farbe2 eine native Funktion, so stürzt das Programm ab. Ändere ich dann (n&) in float(n&) um, so passiert gar nichts.
Irgendwie wirds immer rätselhafter. |
|
|
| |
|
|
|
Nico Madysa | iF, der Punkt ist, dass die native Funktion im Gegensatz zur profanen Prozedur immer noch nicht das korrekte Ergebnis liefert, ob wohl beide äquivalent sein sollten. |
|
|
| |
|
|
|
| Ja, naturalmente - darum gehts.
Ein Schritt weiter, habe beide Male auf proc gesetzt - nur farbe als nProc. Ich fand aber nicht die Stelle an der der Rechenfehler auftritt - funktioniert hats bei mir aber.
Drum die Frage, ob Du nicht vlt. mal schauen könntest, ob Du die Stelle findest, an der ein falsches Ergebnis berechnet wird. |
|
|
| |
|
|
|
Nico Madysa | Aha! Dass man dir immer alles aus der Nase ziehen muss.
Heute wirds nichts mehr, morgen muss ich presto raus. Aber mal sehen, immerhin ist Mittwoch unterrichtsfrei. Entweder mache ich da XProfan oder ich besetze einen Hörsaal. [...] |
|
|
| |
|
|
|
| Hab da einen Fehler gefunden, hat vielleicht darauf Einfluss - mal beim nächsten Update schauen. |
|
|
| |
|
|
|
| iF, Beitrag=54995, Zeitpunkt=16.11.2009
hat vielleicht darauf Einfluss
Definitiv sogar, Fehler bei Floatzuweisung gefunden! Mal schauen, vlt. kann Io l' sogar heute Abend schon beheben - komme aber erst sehr spät wieder nach Berin rein. |
|
|
| |
|
|
|
| @Nico: Fehler im XPSE behoben, dankesehr und jetzt klappts auch mit dem Brot!
Download
KompilierenMarkierenSeparieren {$cle}
Gemerkt/Separiert von http://xprofan.com/thread.core?t=7915#bottom
cls
Male(200,200 , 50)
Male2(200,200 , 50)
while 1
waitinput
wend
end
nproc Farbe
parameters ca!,cb!
var za! = 0.0 : var zb! = 0.0
var n& = 0 : var tmp! = 0.0
var itera&=0
var tmps$=""
repeat
itera&+
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 v& = int(255.0 * (1.0 - float(n&) / 255.0))
return RGB(v&,v&,v&)
endproc
proc Farbe2
parameters ca!,cb!
var za! = 0.0 : var zb! = 0.0
var n& = 0 : var tmp! = 0.0
var itera&=0
var tmps$=""
repeat
itera&+
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& = int(255.0 * (1.0 - (n&) / 255.0))
return RGB(f&,f&,f&)
endproc
{Male
proc 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 x1& + xi&,y1& + yi&,Farbe(xi&/genau&,yi&/genau&)
EndWhile
EndWhile
endproc
proc Male2
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 200+x1& + xi&,y1& + yi&,Farbe2(xi&/genau&,yi&/genau&)
EndWhile
EndWhile
endproc
|
|
|
| |
|
|
|
Nico Madysa | Hausaufgaben endlich erledigt, jetzt kanns wieder an die N-Procs gehen.
Hat etwas gedauert, aber: Ich kann deine Ergebnisse bestätigen, jetzt läufts bei mir auch. Also frisch an den nächsten Versuch! |
|
|
| |
|
|