Italia
Foro

Was sind native Funktionen?

 
- 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:
 
11.11.2009  
 



 
- 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.)
 
Nico Madysa
14.11.2009  
 



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
 
14.11.2009  
 




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?
 
Nico Madysa
14.11.2009  
 



Nein schau doch, die Male ist normale proc. Der Fehler entsteht in nproc farbe - aber finde den Rechenfehler nicht, bitte schau einmal.
 
14.11.2009  
 




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
14.11.2009  
 




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.
 
Nico Madysa
16.11.2009  
 



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.
 
16.11.2009  
 




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.
[...] 
 
Nico Madysa
16.11.2009  
 



Hab da einen Fehler gefunden, hat vielleicht darauf Einfluss - mal beim nächsten Update schauen.
 
16.11.2009  
 



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.
 
20.11.2009  
 



@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


2 kB
Hochgeladen:20.11.2009
Downloadcounter94
Download
323 kB
Hochgeladen:20.11.2009
Downloadcounter95
Download
 
20.11.2009  
 




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!
 
Nico Madysa
29.11.2009  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

39.173 Views

Untitledvor 0 min.
p.specht15.11.2018
Ernst02.07.2016
funkheld11.04.2016
HofK26.01.2016
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie