Vielleicht nächstes Jahr.
Thoran
Warum nicht eine neue Ebenenmaske erstellen, die den Inhalt des Alphakanals bekommt?Schrompf hat geschrieben:Maaaaaaannnn... GIMP ist doch der reine Hass für einen Programmierer.
"Entferne Alphakanal" bedeutet nicht etwa, den Alphakanal zu entfernen, sondern auch, alle Farbwerte mit irgendner wahlfreien Farbe zu überblenden. "Alphakanal fixieren" bedeutet durchaus "Alphakanal fixieren", aber nur bei bestimmten Werkzeugen und nicht etwa auch beim Ebenen-Vereinen oder Einfügen einer Auswahl. Es hat sich als absolut unmöglich herausgestellt, die Farbwerte einer NormalMap mit den Alpha-Werten einer normalen Grafik zu vereinen. Jetzt schreib ich mir ein gottverdammtes Tool dafür!
[edit] Hab ihn doch überrumpelt! Zum Glück gibt es als Bildeffekt auch die Faltungsmatrix, die man auch mit einem Bias versehen und nur auf bestimmte Kanäle beschränken kann. Nimm das, Workflow!
Mein Herr, sie haben noch nie versucht, OpenSG zu kompilieren. Da wäre man über 15 Stunden noch froh.Artificial Mind hat geschrieben:Ogre und Mogre und MOIS und MyGUI x64, anscheinend brauchte in deren Community _NIEMAND_ x64-Dlls. Sämtliche Linker/Compilerpaths falsch, zlib-Eintrag in cmake fehlte. Inkremental build funktionierte angeblich auch nicht. 15h lang builden und konfigurieren, herrlich.
Ich vermute, ob NaN eine endliche Nicht-Zahl oder eine unendlich Nicht-Zahl ist, ist undefiniert.Krishty hat geschrieben:Auf Endlichkeit testen unterscheidet sich von auf-Unendlichkeit-testen insofern, als dass man mit dem ersten auch direkt NaNs aussortiert, mit dem zweiten nicht. Oder doch nur, falls man erstere Funktion isFiniteNumber() statt isFinite() nennt? Ich weiß es nicht. Genug Programmierphilosophie für heute.
Das ist übrigens nur bei uns so. Die japanische Logik ist standardmäßig negativ, die prüfen seeehr viel mit if(!.... Sehr beliebt auch if(!something != false) :?Krishty hat geschrieben:Noch dazu hasse ich doppelte Negation in Programmen: Funktionen sollen nicht testen, ob etwas keine Zahl ist, sondern ob es eine ist. Dann heißt es statt if(!isNaN(x)) („falls x nicht keine Zahl ist“) nämlich if(isAN(x)) („falls x eine Zahl ist“).
Code: Alles auswählen
id = lean::push_sorted(m_identifiers, name.to<utf8_string>()) - m_identifiers.begin(); // id == undefined
Ja, denke ich auch. Wahrscheinlich sollte man nach dem Anwendungszweck gehen – und meist wird man die Funktion brauchen um herauszufinden, ob eine Zahl einen Wert hat, mit dem man rechnen kann. Wenn man speziell an der Unendlichkeit interessiert ist, will man wahrscheinlich auch gleich wissen, ob positiv oder negativ.kaiserludi hat geschrieben:Ich vermute, ob NaN eine endliche Nicht-Zahl oder eine unendlich Nicht-Zahl ist, ist undefiniert.
Eeeeeeeewwwww!glassbear hat geschrieben:Das ist übrigens nur bei uns so. Die japanische Logik ist standardmäßig negativ, die prüfen seeehr viel mit if(!.... Sehr beliebt auch if(!something != false) :?
Jopp … hier sind ein paar Tests; Microsofts CRT führt sie so ähnlich durch:joggel hat geschrieben:Mich würde mal interessieren, wie so ein NaN oder Unedlichkeitstest (positiv oder negativ) auf Bit-Ebene aussieht...
Also, wie werden die Binär dargestellt?
[…]
[Edit]
Ah, hab gerade mir meine Frage selber beantwortet:
http://de.wikipedia.org/wiki/NaN
Code: Alles auswählen
bool isNaN(float const & value) { // by reference: Visual C++' code generation is buggy with local floats
// Fast with Visual C++; with GCC, you may want to use 'union' instead of 'reinterpret_cast' because of strict aliasing rules.
return 0x7F800000 < (reinterpret_cast<unsigned int const &>(value) & 0x7FFFFFFF);
}
bool isFiniteNumber(float const & value) { // by reference: Visual C++' code generation is buggy with local floats
// Fast with Visual C++; with GCC, you may want to use 'union' instead of 'reinterpret_cast' because of strict aliasing rules.
return 0x7F800000 > (reinterpret_cast<unsigned int const &>(value) & 0x7FFFFFFF);
}
// isInfinite(): Dasselbe mit ==
joggel hat geschrieben:Kriiiieeeeshty, Dirk jammert nich!!!
Ich bin weder die Mutter, bei der du petzt, noch der Vater, vor dem du dich fürchtest ;)joggel hat geschrieben:@Jammern
Ich bin mit der Gesamtsituation unzufrieden..
Aber dafür der OP :PKrishty hat geschrieben:Ich bin weder die Mutter, bei der du petzt, noch der Vater, vor dem du dich fürchtest ;)
Notfalls eben Stromzufuhr kappen, wenn das neu erstellen nicht gespeicherter Daten deutlich besser dasteht im Verhältnis zur Wartezeit ;)CodingCat hat geschrieben: Ich kann ZUGUCKEN, wie der Speicher überläuft. Und DAS DAUERT!
Code: Alles auswählen
m_timeStep = 0.95 * m_timeStep + 0.05 * m_timer.seconds();
Sieht ja fast so aus wie ein gleitender Durchschnitt, welcher auch bei RTT-Messungen von van Jacobson vorgeschlagen wurde. Der wurde dann mit folgender Formel verbessert:Code: Alles auswählen
m_timeStep = 0.95 * m_timeStep + 0.05 * m_timer.seconds();
Code: Alles auswählen
SRTT(k+1) = (1-g) · SRTT(k) + g · RTT(k+1)
SERR(k+1) = RTT(k+1) – SRTT(k)
SDEV(k+1) = (1-h) · SDEV(k) + h · |SERR(k+1)|
RTO(k+1) = SRTT(k+1) + f · SDEV(k+1)
RTT round-trip time
SRTT smoothed round-trip time
SERR smoothed error
SDEV smoothed mean deviation
RTO retransmission timeout
g = 1/8, h =1/4, f = 4