NetVision-Technik

Zur?ck   NetVision-Technik > Forum > Programmierung > C / C++

C / C++ Hier findet ihr Code-Schnipsel zu C & C++

Antwort
 
Themen-Optionen Ansicht
Alt 09.02.2009, 01:29   #1
Vectorklasse
AKFourtySeven AKFourtySeven ist offline 09.02.2009, 01:29

hier ne Vectorklasse

jetzt haben wir beide nen schnipsel

spieln wir jetzt "schnipseljagd"

Code:
using namespace std;

class mVect
{
    private:
        // NO PRIVATE DATA
    public:
        double i, j, k;
        mVect();
        mVect(string); // NEEDS EXTRA LIBRARIES
        mVect(double,double);
        mVect(double,double,double);
        mVect operator + (mVect);
        mVect operator - (mVect);
        mVect operator = (mVect);
        mVect operator = (string); // NEEDS EXTRA LIBRARIES
        mVect operator / (mVect);
        double operator % (mVect);
        double operator ^ (mVect);
        mVect operator * (double);
        mVect operator / (double);
        mVect operator * (mVect);
        double mod();
        mVect unit();
        void print(); // NEEDS EXTRA LIBRARIES
};

// INITIALIZE EMPTY VECTOR
mVect::mVect()
{
    i=0;
    j=0;
    k=0;
}

// OUTPUT THE VECTOR IN THE FORM [i,j,k]
void mVect::print()
{
    cout << "[" <<  i << "," << j << "," << k << "]";
}

// INITIALIZE VECTOR FROM A String  IN THE FORM [i,j,k]
mVect::mVect(String  v)
{
    size_t p[2]={1,1}, found;
    while (v[p[1]]!=',')
        p[1]++;
    stringstream(v.substr(p[0],p[1]-p[0])) >> i;
    p[0]=++p[1];
    while (v[p[1]]!=',' && v[p[1]]!=']')
        p[1]++;
    stringstream(v.substr(p[0],p[1]-p[0])) >> j;
    if (v[p[1]]==']')
        k=0;
    else
    {
        p[0]=++p[1];
        while (v[p[1]]!=']')
            p[1]++;
        stringstream(v.substr(p[0],p[1]-p[0])) >> k;
    }
}

// INITIALIZE 2D VECTOR
mVect::mVect(double a, double b)
{
    i=a;
    j=b;
    k=0;
}

// INITIALIZE 3D VECTOR
mVect::mVect(double a, double b, double c)
{
    i=a;
    j=b;
    k=c;
}

// ADD TWO VECTORS TOGETHER
mVect mVect::operator + (mVect param)
{
    mVect c;
    c.i=i+param.i;
    c.j=j+param.j;
    c.k=k+param.k;
    return (c);
}

// SUBTRACT ONE VECTOR FROM ANOTHER
mVect mVect::operator - (mVect param)
{
    mVect c;
    c.i=i-param.i;
    c.j=j-param.j;
    c.k=k-param.k;
    return (c);
}

// SET A VECTOR TO ANOTHER VECTOR
mVect mVect::operator = (mVect param)
{
    i=param.i;
    j=param.j;
    k=param.k;
    return *this;
}

// SET A VECTOR TO A String  IN THE FORM [i,j,k]
mVect mVect::operator = (String  v)
{
    mVect temp(v);
    *this = temp;
    return temp;
}

// CROSS PRODUCT
mVect mVect::operator / (mVect param)
{
    mVect c;
    c.i=j*param.k-k*param.j;
    c.j=k*param.i-i*param.k;
    c.k=i*param.j-j*param.i;
    return (c);
}

// DOT PRODUCT
double mVect::operator % (mVect param)
{
    return (i*param.i+j*param.j+k*param.k);
}

// ANGLE BETWEEN IN RADIANS
double mVect::operator ^ (mVect b)
{
    mVect a=*this;
    return (acos((a%b)/(a.mod()*b.mod())));
}

// MULTIPLY BY REAL
mVect mVect::operator * (double b)
{
    mVect c;
    c.i=i*b;
    c.j=j*b;
    c.k=k*b;
    return (c);
}

// DIVIDE BY REAL
mVect mVect::operator / (double b)
{
    mVect c;
    c.i=i/b;
    c.j=j/b;
    c.k=k/b;
    return (c);
}

// STRETCH VECTORS
mVect mVect::operator * (mVect b)
{
    mVect c;
    c.i=i*b.i;
    c.j=j*b.j;
    c.k=k*b.k;
    return (c);
}

// MODULUS
double mVect::mod()
{
    return sqrt(pow(i,2)+pow(j,2)+pow(k,2));
}

// UNIT VECTOR
mVect mVect::unit()
{
    mVect c;
    c.i=i/this->mod();
    c.j=j/this->mod();
    c.k=k/this->mod();
    return c;
}

 
Benutzerbild von AKFourtySeven
AKFourtySeven
Gesperrt
Registriert seit: 05.02.2009
Beitr?ge: 148
Abgegebene Danke: 13
Erhielt 56 Danke für 7 Beiträge
Downloads: 0
Uploads: 0
Nachrichten: 45
Hits: 9574
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, G?ste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beitr?ge zu antworten.
Es ist Ihnen nicht erlaubt, Anh?nge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beitr?ge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Template-Modifikationen durch TMS