BlitzMax Standard Library
Gehe zu Seite Zurück 1, 2, 3 Weiter
Worklogs

Danke für den Hinweis Farbfinsternis, aber was meinst du damit genau?
Dass ich alle Dateien in was anderem als der MaxIDE als UTF-8 speichern soll, oder dass ich bei SVN irgendwas umstellen soll. So dass er .bmx als Plain text versteht?
Fürs SVN sind Deine Sourcefiles nicht geeignet, Du solltest sie als UTF-8 oder zumindest ASCII sichern.
Komplexe Zahlen kann man als den kleinen Bruder der Quaternionen für bezeichnen. (Eigentlich sind die Quaternionen "nur" eine Erweiterung der komplexen Zahlen.)
Sie bestehen im Vergleich zu Quaternionen zwar auch aus einem rellen Anteil, aber nur einem imaginären Anteil. (i=Sqr(-1), i ist die Einheit des imaginären Anteils)
Mit komplexen Zahlen kann man folgendes anstellen:
Man kann direkt die Nullstellen von einer Funktion 3-ten oder 4-ten Grades finden.
Jede Funktion n-ten Grades hat garantiert n komplexe Nullstellen.
Es gibt noch einige Anwendungen in der Wissenschaft, aber eine Sache könnte auch noch für Spiele-Programmierer interessant sein:
Mit den komplexen Zahlen kann man den zweidimensionalen Raum elegant beschreiben. (Der reelle Anteil wäre die x-Achse und der imaginäre Anteil entspräche der y-Achse.)
Bewegungen entsprechen bei diesen Zahlen wie bei den Vektoren Additionen.
Rotationen und Streckungen entprechen einer Multiplikation.
Rotationen und Streckungen lassen sich auch aneinanderhängen. (mehrfach multiplizieren)
Drehungen, die von einer Variable abhängen, können über die Exponential-Funktion ausgedrückt werden. (Position=e^(i*t))
Durch diese Eigenschaften finde zumindest ich diese Zahlen interessant.
mfG
mpmxyz
@LordChaos:
Die Idee dahinter ist folgende: Ich bin der Ansicht, dass Funktionalität und Daten, die zusammen gehören, auch zusammen in eine Klasse (Type) sollten. Stell dir vor, du willst testen ob eine Zahl im Interval liegt, okay das geht noch mit einer kombinierten If Abfrage, aber denk mal weiter. Was passiert, wenn du testen willst, ob ein Interval in einem anderen Interval liegt o.ä, dann nimmst du wahrscheinlich (hoffentlich) Funktionen, damit der Code verständlich bleibt. Und dann wäre ja das ganze OOP Konzept für'n Arsch.
Soviel Funktionalität auslagern wie möglich und praktikabel, könnte das Motto von der BMSL (BlitzMax Standard Library) sein.
@Xeres:
Word.
@mpmxyz:
Also vorneweg: Ich arbeite nicht an einem "komplexe Zahlen" Module - es sagt glaube ich alles, dass ich bei Wikipedia nachgucken musste, oder?
Ich fühle mich geehrt, dass mein Code für dich so gut ist. Doch ich würde es erstmal nicht reinbringen, irgendwie finde ich das zu mathematisch, nicht so wirklich "Standard". .. Ach verdammt, sehe gerade, dass die STL komplexe Zahlen supported. Wofür braucht/nutzt man das?
Zwei Dinge:
1. Ich bin für "Minimum"/"Maximum".
2. Ich bin dabei, ein Modul für komplexe Zahlen zu schreiben. (mit Komponenten- und Zahlenebenen-Darstellung, bis jetzt ca. 60 deklarierte Funktionen und Methoden)
Ich möchte diese Arbeit insofern nicht umsonst machen, dass sie jemand anderes gleichzeitig auch macht.
Die Nutzungsweise der Zahlen ist fast 1 zu 1 von deinem Vektormodul "abgekupfert" worden.
Das heißt, dass dieses Modul gerne in diese Modulserie integriert werden kann. (Da würde ich mich drüber freuen. )
Es braucht aber noch etwas Zeit; 60 Funktionen und Methoden wollen gefüllt, dokumentiert und getestet werden.
mfG
mpmxyz
Definitiv min/max. Ein Maximum ist immer ein Maximum, ob ein Start-oder Endwert größer oder kleiner ist, hängt stehts von der betrachteten Richtung ab.
Also bei den Ranges wirds mir dann doch zu komisch...
If x >= range_begin And x <= range_end Then ...
Und dafür machst du ne Klasse? Das ist völlig übertrieben.
Intervalle
Montag, 7. Juni 2010 um 15:23 Uhr von hazumu-kunNenn es doch einfach upLimit loLimit (upper/lower Limit)
Dann müsste ich ja eigentlich alles nochmal in C nachprogrammieren und wenn ich schon mal dabei bin, auch in C++..
BTW was sagt denn der GC dazu, dass da hinter seinem Rücken mit Zeigern rumgespielt wird?
Janz einfach:
C:
Code: [AUSKLAPPEN]
struct TVector3
{
float x;
float y;
float z;
};
void Vec3FromBMax(TVector3* vec)
{
std::cout << vec->x << vec->y << vec->z << std::endl;
}
TVector3* Vec3ToBMax(float x, float y, float z)
{
TVector3* vec;
vec->x = x;
vec->y = y;
vec->z = z;
return vec;
}
BlitzMax:
Code: [AUSKLAPPEN]
Type TVector3
Field x:Float
Field y:Float
Field z:Float
Method toC:Byte Ptr()
return VarPtr(Self.x)
End Method
Function fromC:TVector3(vec:Byte Ptr)
Local v3:TVector3 = New TVector3
v3.x = Float Ptr(vec)[0]
v3.y = Float Ptr(vec)[1]
v3.z = Float Ptr(vec)[2]
Return v3
End Function
End Type
Gehe zu Seite Zurück 1, 2, 3 Weiter