Source code to html (Java,C++,C)
G.Desnoix ©96,97,98
/*
  * Unité : ../exemples/Vecteur.src
  * Date : Fri Jan 29 12:24:57 GMT+01:00 1999
  * Cible : C++ (cpp)
  * Produit: Alma (agl), Guillaume Desnoix (c)1998,1999
  */

/* Vecteur.cpp [20] */

#include "vecteur.hpp"


Vecteur::Vecteur()
{
  (m=new Matrice(1, 4));
  m.a(0, 3, 0.);
}


Vecteur::Vecteur(double ix, double iy, double iz)
{
  (m=new Matrice(1, 4));
  m.a(0, 0, ix);
  m.a(0, 1, iy);
  m.a(0, 2, iz);
  m.a(0, 3, 0.);
}


double Vecteur::x()
{
  return m.a(0, 0);
}


double Vecteur::y()
{
  return m.a(0, 1);
}


double Vecteur::z()
{
  return m.a(0, 2);
}


void Vecteur::x(double ix)
{
  m.a(0, 0, ix);
}


void Vecteur::y(double iy)
{
  m.a(0, 1, iy);
}


void Vecteur::z(double iz)
{
  m.a(0, 2, iz);
}


String Vecteur::toString()
{
  return "Vecteur("+x()+", "+y()+", "+z()+")";
}


double Vecteur::norme()
{
  return Math.sqrt(produitScalaire(this));
}


double Vecteur::normeXY()
{
  return Math.sqrt(produitScalaireXY(this));
}


Vecteur Vecteur::normalise()
{
  double n=norme();
  return new Vecteur(x()/n, y()/n, z()/n);
}


Vecteur Vecteur::normaliseXY()
{
  double n=normeXY();
  return new Vecteur(x()/n, y()/n, z());
}


Vecteur Vecteur::equilibre()
{
  double n=x()+y()+z();
  return new Vecteur(x()/n, y()/n, z()/n);
}


Vecteur Vecteur::equilibreXY()
{
  double n=x()+y();
  return new Vecteur(x()/n, y()/n, z());
}


Vecteur Vecteur::rotationZ90()
{
  return new Vecteur(-x(), y(), z());
}


Vecteur Vecteur::projectionXY()
{
  return new Vecteur(x(), y(), 0.);
}


Vecteur Vecteur::applique(Morphisme t)
{
  Vecteur r=new Vecteur();
  (r.m=m.multiplication(t.m));
  return r;
}


Vecteur Vecteur::multiplication(double d)
{
  return new Vecteur(d*x(), d*y(), d*z());
}


Vecteur Vecteur::division(double d)
{
  return new Vecteur(x()/d, y()/d, z()/d);
}


double Vecteur::division(Vecteur v)
{
  Vecteur w=projection(v);
  if(v.x()!=0.)
  {
    return w.x()/v.x();
  }
  else
  {
    if(v.y()!=0.)
    {
      return w.y()/v.y();
    }
    else
    {
      if(v.z()!=0.)
      {
        return w.z()/v.z();
      }
    }
  }
  return 0.;
}


Vecteur Vecteur::addition(Vecteur v)
{
  return new Vecteur(x()+v.x(), y()+v.y(), z()+v.z());
}


Point Vecteur::addition(Point p)
{
  return new Point(x()+p.x(), y()+p.y(), z()+p.z());
}


Vecteur Vecteur::soustraction(Vecteur v)
{
  return new Vecteur(x()-v.x(), y()-v.y(), z()-v.z());
}


double Vecteur::produitScalaire(Vecteur v)
{
  return x()*v.x()+y()*v.y()+z()*v.z();
}


double Vecteur::produitScalaireXY(Vecteur v)
{
  return x()*v.x()+y()*v.y();
}


double Vecteur::produitSinus(Vecteur v)
{
  return rotationZ90().produitScalaire(v);
}


double Vecteur::produitSinusXY(Vecteur v)
{
  return v.x()*-y()+v.y()*x();
}


Vecteur Vecteur::produitVectoriel(Vecteur v)
{
  return new Vecteur(y()*v.z()-z()*v.y(), z()*v.x()-x()*v.z(), x()*v.y()-y()*v.x());
}


Vecteur Vecteur::produitVectorielXY(Vecteur v)
{
  return new Vecteur(0., 0., x()*v.y()-y()*v.x());
}


Vecteur Vecteur::projection(Vecteur v)
{
  return v.normalise().multiplication(produitScalaire(v.normalise()));
}


double Vecteur::produitTripleScalaire(Vecteur v1, Vecteur v2)
{
  return produitVectoriel(v1).produitScalaire(v2);
}


Vecteur Vecteur::produitTripleVectoriel(Vecteur v1, Vecteur v2)
{
  return produitVectoriel(v1).produitVectoriel(v2);
}





colors: import - statement - class - type - number - string - comment