/* -*- C -*- * vector3d.h * $Id: vector3d.h,v 1.1.1.1 2000/07/20 20:54:13 ghali Exp $ */ #ifndef VECTOR3D_H #define VECTOR3D_H #include <stdlib.h> #include <iostream.h> #include <math.h> namespace MSG { class Point3d; class Segment3d; class Vector3d { protected: double x, y, z; public: Vector3d(); Vector3d(double xx, double yy, double zz); virtual double X() const; virtual double Y() const; virtual double Z() const; virtual void setX(double a); virtual void setY(double a); virtual void setZ(double a); Vector3d(const Point3d& p); Vector3d(const Point3d& from, const Point3d& to); // only in Direction3d // Vector3d getAPerpDir() const; // calc a sideDir given this viewDir char getDominant() const; double length() const; double dot_product( Vector3d a ) const; Vector3d operator+(Vector3d a); Vector3d operator*(Vector3d a) const; Vector3d operator*(double d); friend ostream& operator<<( ostream& out, const Vector3d& p); friend istream& operator>>( istream& in, Vector3d& p ); virtual void print() const; }; } #endif