Source code to html (Java,C++,C)
G.Desnoix ©96,97,98
/**
* @creation 25/03/97
* @modification 22/07/98
* @statut instable
*/
package fr.stcpmvn.ebli.geometrie;
import java.io.*;
import fr.stcpmvn.ebli.mathematiques.*;
/**
* Un vecteur 3D
* @version 0.02, 22/07/98
* @author Guillaume Desnoix
*/
public class Vecteur
{
Matrice m;
public Vecteur()
{
m=new Matrice(1,4);
m.a(0,3,0.);
}
public 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.);
}
public double x() { return m.a(0,0); }
public double y() { return m.a(0,1); }
public double z() { return m.a(0,2); }
public void x(double ix) { m.a(0,0,ix); }
public void y(double iy) { m.a(0,1,iy); }
public void z(double iz) { m.a(0,2,iz); }
public String toString()
{
return "Vecteur("+x()+", "+y()+", "+z()+")";
}
// operateurs unaires
public double norme()
{
return Math.sqrt(produitScalaire(this));
}
public double normeXY()
{
return Math.sqrt(produitScalaireXY(this));
}
public Vecteur normalise()
{
double n=norme();
return new Vecteur(x()/n,y()/n,z()/n);
}
public Vecteur normaliseXY()
{
double n=normeXY();
return new Vecteur(x()/n,y()/n,z());
}
public Vecteur equilibre()
{
double n=x()+y()+z();
return new Vecteur(x()/n,y()/n,z()/n);
}
public Vecteur equilibreXY()
{
double n=x()+y();
return new Vecteur(x()/n,y()/n,z());
}
public Vecteur rotationZ90()
{
return new Vecteur(-x(),y(),z());
}
public Vecteur projectionXY()
{
return new Vecteur(x(),y(),0.);
}
public Vecteur applique(Morphisme t)
{
Vecteur r=new Vecteur();
r.m=m.multiplication(t.m);
return r;
}
// Operateurs binaires
public Vecteur multiplication(double d)
{
return new Vecteur(d*x(),d*y(),d*z());
}
public Vecteur division(double d)
{
return new Vecteur(x()/d,y()/d,z()/d);
}
public double 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.;
}
public Vecteur addition(Vecteur v)
{
return new Vecteur(x()+v.x(),y()+v.y(),z()+v.z());
}
public Point addition(Point p)
{
return new Point(x()+p.x(),y()+p.y(),z()+p.z());
}
public Vecteur soustraction(Vecteur v)
{
return new Vecteur(x()-v.x(),y()-v.y(),z()-v.z());
}
public double produitScalaire(Vecteur v)
{
return x()*v.x()+y()*v.y()+z()*v.z();
}
public double produitScalaireXY(Vecteur v)
{
return x()*v.x()+y()*v.y();
}
public double produitSinus(Vecteur v)
{
return rotationZ90().produitScalaire(v);
}
public double produitSinusXY(Vecteur v)
{
return v.x()*-y()+v.y()*x();
}
public 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());
}
public Vecteur produitVectorielXY(Vecteur v)
{
return new Vecteur(0.,0.,x()*v.y()-y()*v.x());
}
public Vecteur projection(Vecteur v)
{
return v.normalise().multiplication(produitScalaire(v.normalise()));
}
// Operateurs ternaires
public double produitTripleScalaire(Vecteur v1,Vecteur v2)
{
return produitVectoriel(v1).produitScalaire(v2);
}
public Vecteur produitTripleVectoriel(Vecteur v1,Vecteur v2)
{
return produitVectoriel(v1).produitVectoriel(v2);
}
}
colors:
import -
statement -
class -
type -
number -
string -
comment