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