portfolio/cpp/aquarium/point3D.cpp

98 lines
2.6 KiB
C++
Executable File

#include "point3D.h"
#include <math.h>
/**********************************************************************/
/**********************************************************************/
/* */
/* methodes de la classe point3D */
/* */
/**********************************************************************/
/**********************************************************************/
point3D::point3D(){
x = 0.0; y = 0.0; z = 0.0;
}
point3D::point3D(const double X,const double Y,const double Z){
x=X; y=Y; z=Z;
}
bool point3D::operator==(const point3D &op) const {
return( x == op.x && y == op.y && z == op.z);
}
point3D& point3D::operator=(const point3D &op) {
x = op.x; y = op.y; z = op.z;
return *this;
}
point3D point3D::operator+(const point3D &op) const {
return( point3D( x + op.x, y + op.y, z + op.z) );
}
point3D point3D::operator-(const point3D &op) const {
return( point3D( x - op.x, y - op.y, z - op.z) );
}
point3D& point3D::operator*=(const double op) {
x *= op; y *= op; z *= op;
return *this;
}
point3D point3D::operator*(const double op) const {
return ( point3D( x * op, y * op, z * op) );
}
point3D& point3D::operator/=(const double op) {
x /= op; y /= op; z /= op;
return *this;
}
point3D point3D::operator/(const double op) const {
return ( point3D( x / op, y / op, z / op) );
}
ostream& operator<<(ostream& p, point3D op) {
p << "(" << op.x <<", " << op.y << ", " << op.z << ")";
return(p);
}
istream& operator>>(istream& p, point3D &op)
{
cout << "Entrez x:";
p >> op.x;
cout << "Entrez y:";
p >> op.y;
cout << "Entrez z:";
p >> op.z;
return (p);
}
double point3D::produit_scalaire(const point3D& _v1, const point3D& _v2){
return _v1.x * _v2.x + _v1.y * _v2.y + _v1.z * _v2.z;
}
point3D point3D::produit_vectoriel(const point3D& _v1 , const point3D& _v2){ //produit vectoriel
point3D res;
res.x = _v1.y * _v2.z - _v1.z * _v2.y;
res.y = _v1.z * _v2.x - _v1.x * _v2.z;
res.z = _v1.x * _v2.y - _v1.y * _v2.x;
return res;
}
point3D point3D::PointsToVecteur(const point3D& _p1, const point3D& _p2) {
point3D res;
res.x = _p2.x - _p1.x;
res.y = _p2.y - _p1.y;
res.z = _p2.z - _p1.z;
return res;
}
void point3D::normalize( point3D& _v) {
double lenght = sqrtf(produit_scalaire(_v, _v));
_v.x /= lenght;
_v.y /= lenght;
_v.z /= lenght;
}