Verbesserung und Tipps zu Vektor Klasse



  • Melan schrieb:

    Aber warum hast du eine Templateklasse daraus gemacht?
    Benutzt du statt float manchmal double?

    Es kann doch sein das er beispielsweise vertex-indices ablagern möchte. Ich persönlich mache es ebenfalls mit einem Template, ist wirklich besser...



  • this->that schrieb:

    @volkard: Gibt es eigentlich einen Grund, wieso du im assert() 0<=index prüfst, obwohl index unsigned ist?

    Nein, vertippt und dann war's mir nicht wichtig genug, es rauszueditieren. War eine Fehleinschätzung.



  • otze schrieb:

    Um mal einen Prof zu zitieren: "Ein Vektor ist ein Ding, das bestimmte Operationen hat und für das eine Länge definiert ist".

    "Ein Vektor ist ein Element eines Vektorraumes." Und für den gibt es schon eine supi formale Definition.



  • Kóyaánasqatsi schrieb:

    Melan schrieb:

    Aber warum hast du eine Templateklasse daraus gemacht?
    Benutzt du statt float manchmal double?

    Es kann doch sein das er beispielsweise vertex-indices ablagern möchte.
    Ich persönlich mache es ebenfalls mit einem Template, ist wirklich besser...

    Mal abgesehen von der Existenz dreier Zahlen scheinen mir ein 3D-Vektor und ein Indexed-Triangle aber nicht wirklich viel Funktionalitaet gemeinsam zu haben...


  • Mod

    ich glaube es gab irgend ein "spiele mit d3d" buch dass vector templates gemacht hat und seitdem kursiert sowas rum 🙂
    aber an sich seh ich darin auch nicht viel nutzwert bei spielen. float duerfte wohl fast immer der typ sein den man verwendet.



  • Ich war zu Faul um alle Beiträge durchzulesen, also ignoriert es falls es bereits gesagt wurde, aber: Du kannst noch <, >, <=, >= Operatoren überladen.



  • Kóyaánasqatsi schrieb:

    Ich war zu Faul um alle Beiträge durchzulesen, also ignoriert es falls es bereits gesagt wurde, aber: Du kannst noch <, >, <=, >= Operatoren überladen.

    Und wann ist ein Vektor größer als ein anderer?

    Zum beispiel (1 2) vs (2 1) ?



  • Hm, stimmt auch. Aber vielleicht wenn beide Koordinaten größer sind. Also: vec1(2, 3) < vec2(5, 5).



  • Vergleichsoperatoren machen bei Vektoren eigentlich nur Sinn damit sich die gelaeufigen Datenstrukturen fuer den einen oder anderen Subtree entscheiden koennen.
    Dafuer muss aber nicht unbedingt ein fuer den Benutzer logisch schluessiges Kriterium erfuellt werden; zB kann dafuer auch Hash-Key verglichen werden.



  • aber ich erwarte, daß entweder a<b oder a==b oder a>b.
    mit anderen worten

    bool op=(vec a,vec b){
       return not(a<b || b<a);
    }
    

    bei dir wäre vec(2,5)==vec(4,3), und das würde mich schwer verwirren.


Anmelden zum Antworten