| |
|
|
- 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 8 - |
|
|
| Zur Funktion if: Braucht man garnicht bei nProcs! Du kannst einfach sagen: a=1=2 z.B. um a auf 0 zu setzen oder return a+b<c - das wird alles sauber aufgelöst.
Ich weiss trotzdem nicht, wie ich schönes ArcTan hinbekomme. |
|
|
| |
|
|
|
|
Was die Konstanten angeht, bin ich mir nicht sicher -- ich denke nicht, dass fertige soooo viel schneller sind als wenn man Pi() einfach mit 2, bzw. 0,5 malnimmt.
Z.B. Du berechnest für 640x480 Pixel den R-Anteil einer Farbe - für jedes Pixel *2 oder nicht *2 nehmen... das ist hier die Frage und macht sehrwohl dann unheimlichen Geschwindigkeitsunterschied aus. |
|
|
| |
|
|
|
Nico Madysa | Aber die Konstanten sind so speziell, dass es wohl reichen dürfte, das in eine Include zu packen, oder?
Die iF-Funktionen brauchte ich in so etwas: KompilierenMarkierenSeparieren Wenn ich da ein Brett vorm Kopfe habe, dann wäre ich dankbar, wenn du es löstest.
Bei arctan weiß die Wikipädie mehr. 1. Arctan x lässt sich beliebig genau annähern. arctan(x) = x - x^3/3 + x^5/5 - x^7/7 + ... Das gilt allerdings nur, wenn x zwischen -1 und +1 liegt.
2. Es gilt: arctan(x) = 2 * arctan(x / (1 + sqrt(1 + sqr(x)))) Ist abs(x) also größer als 1, dann kann es so auf einen niedrigeren Winkel zurückgeführt werden, der dann wiederum mit der obigen Reihe angenähert werden kann.
Ich versuche mich dran; mal sehen, ob ich schneller fertig bin als du. |
|
|
| |
|
|
|
Nico Madysa | Nachtrag: Ich habe den Verdacht, dass XPSE mit dem Literal -1.0 Probleme hat. |
|
|
| |
|
|
|
Nico Madysa | |
|
| |
|
|
|
| Schaue ich mir liebend gerne heute Abend Zuhause an!
Zum iff: v = v + if(r <> 0, a / m * dy / r, 0)
ist doch v = v + (r<>0)*( a / m * dy / r) ? |
|
|
| |
|
|
|
Nico Madysa | ... Verflucht du bist gut!
Gut, der Punkt geht an dich. Doch dass mit -1.0 etwas nicht stimmt, meine ich immer noch.
EDIT: Argh, nein, das kann doch nicht gehen! In deiner Variante wird ja trotzdem durch Null geteilt, wenn r! Null ist. Ich wusste doch, dass ich mir bei dem if was gedacht habe. |
|
|
| |
|
|
|
Nico Madysa | Nachtrag: Es fehlt mir auch noch Float() um Gleitkommazahlen aus einem Bereich zu lesen. Weiß nicht, wie ich die sonst an einen Thread weiterreichen soll. |
|
|
| |
|
|
|
| Wollte Dir nur zeigen, dass man (natürlich) auch mit boolischen Ergebnissen rechnen kann.
-1.0 schaue ich mir an und die float-Funktion reiche ich nach.
PS: In nativen Funktionen hält die Floatvariable nur die Adresse eines 8-Byte Speichers aus dem sich der jeweilige Float zusammensetzt. mov eax,f! mov ebx,[eax] setzt nach ebx also erste 4 byte und mit add eax,4 mov ebx,[eax] kommst an die nächsten 4 Byte - ich baue das aber (natürlich) direkt ein. |
|
|
| |
|
|
|
Frank Abbing | add eax,4 mov ebx,[eax] Nimm besser:
mov ebx,[eax+4] |
|
|
| |
|
|
|
| In reinem ASM ja, in NProcs nicht unbedingt - also besser nicht denn der Operator würde aufgelöst was letztendlich nicht schneller sein kann als add eax,4 |
|
|
| |
|
|
|
Nico Madysa | Ach herrje, ASM giebts ja auch noch. Ich behulf mir mit Longs und Allocs, was doch ein bisschen umständlicher ist. |
|
|
| |
|
|