Avatar billede tax Nybegynder
11. oktober 2001 - 14:27 Der er 2 kommentarer og
2 løsninger

Vektorklasse

Er der en vektorklasse i MFC?

Jeg skal lave en masse optegninger i 2 dimensioner og vil ikke anvende x,y joordinater, da det er for klodset. Derfor tænkte jeg at MFC havde en klasse der implementerede vektorfunktionalitet. + - / * cross dot mm.
Avatar billede jpk Nybegynder
11. oktober 2001 - 14:32 #1
Nej, det er der ikke!
Jeg har tidligere selv implementeret det, men ved ikke om jeg har koden længere...
Du kan måske bruge DirectX\'s implementering?
Avatar billede alvion Nybegynder
11. oktober 2001 - 14:39 #2
Ikke testet, det er et stykke tid siden jeg har kodet C++ (så har du noget at bygge videre på):

class Vector {
private:
  int m_x, m_y;

public:
  Vector(int x, int y) {
    m_x = x; m_y = y;
  }

  Vector& operator +(Vector &v1, Vector &v2) {
    Vector v(v1.m_x+v2.m_x, v1.m_y+v2.m_y);
    return v;
  }

  Vector& operator -(Vector &v1, Vector &v2) {
    Vector v(v1.m_x-v2.m_x, v1.m_y-v2.m_y);
    return v;
  }
   
  Vector& operator *(Vector &v1, Vector &v2) {
    Vector v(v1.m_x*v2.m_x, v1.m_y*v2.m_y);
    return v;
  }

  Vector& operator *(Vector &v1, int n) {
    Vector v(v1.m_x*n, v1.m_y*n);
    return v;
  }

  osv...
};
Avatar billede tax Nybegynder
11. oktober 2001 - 14:39 #3
Jeg skal bare bruge en simpel implementering. Jeg har faktisk lavet den, men det havde blot været rart at anvende en genemtestet udgave.

Thanx.
Avatar billede alvion Nybegynder
11. oktober 2001 - 14:54 #4
Hmm... Fik lige lyst til at teste det, manglede både \"friend\" og havde ikke helt styr på referencerne. Denne her er testet (har dog ikke alle operatorerne)

class Vector {
public:
  int m_x, m_y;

  Vector(int x, int y) {
    m_x = x; m_y = y;
  }

  friend Vector operator +(Vector &v1, Vector v2) {
    return Vector(v1.m_x+v2.m_x, v1.m_y+v2.m_y);
  }

  friend Vector operator -(Vector &v1, Vector &v2) {
    return Vector(v1.m_x-v2.m_x, v1.m_y-v2.m_y);
  }
   
  friend Vector operator *(Vector &v1, Vector &v2) {
    return Vector(v1.m_x*v2.m_x, v1.m_y*v2.m_y);
  }

  friend Vector operator *(Vector &v1, int n) {
    return Vector(v1.m_x*n, v1.m_y*n);
  }


  void toString(char *s) {
    sprintf(s, \"(%d, %d)\", m_x, m_y);
  }
};
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester