# /home/samy/kbilliards/src/samuele.h

    00001 /***************************************************************************
    00002  *   Copyright (C) 2004 by Samuele Catuzzi                                 *
    00003  *   samuele_catuzzi@yahoo.it                                              *
    00004  *                                                                         *
    00005  *   This program is free software; you can redistribute it and/or modify  *
    00006  *   it under the terms of the GNU General Public License as published by  *
    00007  *   the Free Software Foundation; either version 2 of the License, or     *
    00008  *   (at your option) any later version.                                   *
    00009  *                                                                         *
    00010  *   This program is distributed in the hope that it will be useful,       *
    00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
    00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
    00013  *   GNU General Public License for more details.                          *
    00014  *                                                                         *
    00015  *   You should have received a copy of the GNU General Public License     *
    00016  *   along with this program; if not, write to the                         *
    00017  *   Free Software Foundation, Inc.,                                       *
    00018  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
    00019  ***************************************************************************/
    00020 #ifndef SAMUELEMATH_H
    00021 #define SAMUELEMATH_H
    00022
    00023 #include <math.h>
    00024
    00025 namespace samuele {
    00026
    00030 class Vector{
    00031 public:
    00032     Vector();
    00033     Vector(double,double,double);
    00034     ~Vector();
    00035
    00036     Vector operator+(Vector );  // sum
    00037     Vector operator-(Vector );  // minus
    00038     double operator*(Vector );  // product
    00039
    00040     Vector operator*(double );  // vector*scalar
    00041
    00042     Vector unit();  // vector unit
    00043     double abs();   // |vector|
    00044     void   null();  // vector 0
    00045
    00046     static Vector projection( Vector, Vector ); // projection
    00047 public:
    00048     double x;
    00049     double y;
    00050     double z;
    00051 };
    00052
    00053
    00054 };
    00055
    00056 #endif