Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Community-Fossil
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (08.02.2011, 15:59)
Quellcode |
|
1 |
Vektor3D operator +(const Vektor3D& left, const Vektor3D& right); |
Quellcode |
|
1 2 3 4 |
Vektor3D operator +(const Vektor3D& left, const Vektor3D& right) { return Vektor3D(left.x + right.x, left.y + right.y, left.z + right.z); } |
Eine Frage an dot: Warum widersprechen getter- und setter dem Prinzip der Kapselung.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#ifndef VECTOR3D #define VECTOR3D class Vector3D { public: double x,y,z; Vector3D(); Vector3D(double x, double y, double z); ~Vector3D(); void Add(Vector3D& vec); void Sub(Vector3D& vec); void CrossProduct(Vector3D& vec); double DotProduct(Vector3D& vec); void Scale(double value); }; Vector3D operator +(const Vector3D& left, const Vector3D& right); #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#include "stdafx.h" #include "Vector3D.h" Vector3D::Vector3D() : x(0.0), y(0.0), z(0.0) { } Vector3D::Vector3D(double x, double y, double z) : x(x), y(y), z(z) { } Vector3D::~Vector3D(){ } void Vector3D::Add(Vector3D& vec){ x+=vec.x; y+=vec.y; z+=vec.z; } void Vector3D::Sub(Vector3D& vec){ x-=vec.x; y-=vec.y; z-=vec.z; } void Vector3D::CrossProduct(Vector3D& vec){ x = y*vec.z-z*vec.y; y = z*vec.x-x*vec.z; z = x*vec.y-y*vec.x; } double Vector3D::DotProduct(Vector3D& vec){ return x*vec.x+y*vec.y+z*vec.z; } void Vector3D::Scale(double value){ x *= value; y *= value; z *= value; } Vector3D operator +(const Vector3D& left, const Vector3D& right) { return Vector3D(left.x + right.x, left.y + right.y, left.z + right.z); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include "stdafx.h" #include <iostream> #include "Vector3D.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { Vector3D *v1 = new Vector3D(); Vector3D *v2 = new Vector3D(1.0, 2.0, 3.0); Vector3D *v3 = new Vector3D(1.0, 1.0, 1.0); *v1 = *v2 + *v3; cout << "V1: " << v1->x << " " << v1->y << " " << v1->z << endl; cout << "V2: " << v2->x << " " << v2->y << " " << v2->z << endl; cout << "V3: " << v3->x << " " << v3->y << " " << v3->z << endl; Vector3D v4; Vector3D v5(1.0, 2.0, 3.0); Vector3D v6(1.0, 1.0, 1.0); v4 = v5 + v6; cout << "V4: " << v4.x << " " << v4.y << " " << v4.z << endl; cout << "V5: " << v5.x << " " << v5.y << " " << v5.z << endl; cout << "V6: " << v6.x << " " << v6.y << " " << v6.z << endl; delete(v1); delete(v2); delete(v3); std::cin.get(); return 0; } |
Community-Fossil
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#ifndef VECTOR3D #define VECTOR3D class Vector3D { public: double x,y,z; // dimensions of R3 //constructors and destructor Vector3D(); Vector3D(double x, double y, double z); ~Vector3D(); //Memberfunctions void Set(double x, double y, double z); void Add(Vector3D& vec); void Sub(Vector3D& vec); void CrossProduct(Vector3D& vec); double DotProduct(Vector3D& vec); void Scale(double value); Vector3D& operator +=(const Vector3D& vec); Vector3D& operator -=(const Vector3D& vec); Vector3D& operator *=(const Vector3D& vec); }; //overloaded Operators Vector3D operator +(const Vector3D& left, const Vector3D& right); Vector3D operator -(const Vector3D& left, const Vector3D& right); Vector3D operator *(const Vector3D& left, const Vector3D& right); #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
#include "stdafx.h" #include "Vector3D.h" // ------------------- Constructor ------------------------- Vector3D::Vector3D() : x(0.0), y(0.0), z(0.0) { } Vector3D::Vector3D(double x, double y, double z) : x(x), y(y), z(z) { } // ------------------- Destructor ---------------------------- Vector3D::~Vector3D(){ } // ------------------- Memberfunctions----------------------- void Vector3D::Set(double x, double y, double z){ this->x+=x; this->y+=y; this->z+=z; } void Vector3D::Add(Vector3D& vec){ x+=vec.x; y+=vec.y; z+=vec.z; } void Vector3D::Sub(Vector3D& vec){ x-=vec.x; y-=vec.y; z-=vec.z; } void Vector3D::CrossProduct(Vector3D& vec){ double tmpX = x, tmpY = y, tmpZ = z; x = tmpY*vec.z-tmpZ*vec.y; y = tmpZ*vec.x-tmpX*vec.z; z = tmpX*vec.y-tmpY*vec.x; } double Vector3D::DotProduct(Vector3D& vec){ return x*vec.x+y*vec.y+z*vec.z; } void Vector3D::Scale(double value){ x *= value; y *= value; z *= value; } Vector3D& Vector3D::operator +=(const Vector3D& vec) { x += vec.x; y += vec.y; z += vec.z; return *this; } Vector3D& Vector3D::operator -=(const Vector3D& vec) { x -= vec.x; y -= vec.y; z -= vec.z; return *this; } Vector3D& Vector3D::operator *=(const Vector3D& vec) { Vector3D tmp = vec; CrossProduct(tmp); return *this; } // ------------------- more Overlaoded operators ----------------------- Vector3D operator +(const Vector3D& left, const Vector3D& right) { return Vector3D(left.x + right.x, left.y + right.y, left.z + right.z); } Vector3D operator -(const Vector3D& left, const Vector3D& right) { return Vector3D(left.x - right.x, left.y - right.y, left.z - right.z); } Vector3D operator *(const Vector3D& left, const Vector3D& right) { Vector3D tmp = left; Vector3D tmp2 = right; tmp.CrossProduct(tmp2); return tmp; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#include "stdafx.h" #include <iostream> #include "Vector3D.h" using namespace std; /** Hauptprogramm. zum Testen der Klasse Vector3D */ int _tmain(int argc, _TCHAR* argv[]) { Vector3D *v1 = new Vector3D(1.0, 1.0, 1.0); Vector3D *v2 = new Vector3D(1.0, 2.0, 3.0); Vector3D *v3 = new Vector3D(); *v3 = *v1 + *v2; cout << "V1 : " << v1->x << " " << v1->y << " " << v1->z << endl; cout << "V2 : " << v2->x << " " << v2->y << " " << v2->z << endl; cout << "V1+V2: " << v3->x << " " << v3->y << " " << v3->z << endl<<endl; Vector3D v4 (1.0, 1.0, 1.0); Vector3D v5(1.0, 2.0, 3.0); Vector3D v6; v6 = v4 + v5; cout << "V4 : " << v4.x << " " << v4.y << " " << v4.z << endl; cout << "V5 : " << v5.x << " " << v5.y << " " << v5.z << endl; cout << "V4+V5: " << v6.x << " " << v6.y << " " << v6.z << endl<<endl; v6 = v5 - v4; cout << "V5-V4: " << v6.x << " " << v6.y << " " << v6.z << endl; v5 += v4; cout << "V5+=V4: " << v5.x << " " << v5.y << " " << v5.z << endl; v5 -= v4; cout << "V5-=V4: " << v5.x << " " << v5.y << " " << v5.z << endl; v6 = *v1**v2; cout << "V1*V2: " << v6.x << " " << v6.y << " " << v6.z << endl; *v1*=*v2; cout << "V1*=V2: " << v1->x << " " << v1->y << " " << v1->z << endl; delete(v1); delete(v2); delete(v3); std::cin.get(); return 0; } |
Zitat
Ich bin nicht der Messias.
Ich sage, du bist es, Herr. Und ich muss es wissen, denn ich bin schon einigen gefolgt.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »bwbg« (08.02.2011, 21:26)
Werbeanzeige