//import dogru3D;
//import nokta3D;

class moment3D extends vektor3D
{

protected double Mi,Mj,Mk;

public moment3D()
{
super();
Mi=0;
Mj=0;
Mk=0;
}

public vektor3D(double yi0,double yj0,double yk0,
              double Fi0,double Fj0,double Fk0)
{
// (yi0,yj0,yk0) noktasından baslayan vektor
super(yi0,yj0,yk0);
Fi=Fi0;
Fj=Fj0;
Fk=Fk0;
}

public vektor3D(double yi0,double yj0,double yk0,double yi1,double yj1,double yk1,double F)
{
//iki dogrudan gecen vektorun tanımı
dogru3D D=new dogru3D(yi0,yj0,yk0,yi1,yj1,yk1);
Fi=F*D.cosai();
Fj=F*D.cosaj();
Fk=F*D.cosak();
}

public vektor3D(double Fi0,double Fj0,double Fk0)
{
//0,0,0 noktasından baslayan vektor tanımı
super();
Fi=Fi0;
Fj=Fj0;
Fk=Fk0;
}


public vektor3D(nokta3D y0,double Fi0,double Fj0,double Fk0)
{
// y0 noktasından baslayan vektor
super(y0);
Fi=Fi0;
Fj=Fj0;
Fk=Fk0;
}

public vektor3D(nokta3D y0,nokta3D y1,double F)
{
//iki noktadan gecen vektorun tanımı
dogru3D D=new dogru3D(y0,y1);
Fi=F*D.cosai();
Fj=F*D.cosaj();
Fk=F*D.cosak();
}

public void xGir(double yi,double yj,double yk)
{
xi=yi;
xj=yj;
xk=yk;
}


public void FGir(double Fi0,double Fj0,double Fk0)
{
Fi=Fi0;
Fj=Fj0;
Fk=Fk0;
}

public void vektorGir(vektor3D y)
{
xi=y.xi;
xj=y.xj;
xk=y.xk;
Fi=y.Fi;
Fj=y.Fj;
Fk=y.Fk;
}

public void vektorGir(double yi,double yj,double yk,
                      double Fi,double Fj,double Fk)
{
xi=yi;
xj=yj;
xk=yk;
this.Fi=Fi;
this.Fj=Fj;
this.Fk=Fk;
}

public double FiOku()
{
return Fi;
}

public double FjOku()
{
return Fj;
}

public double FkOku()
{
return Fk;
}

public nokta3D vektorOku()
{
return this;
}

public double F()
{
//vektorun absolute büyüklüğü
return Math.sqrt(Fi*Fi+Fj*Fj+Fk*Fk);
}

//not R() metodu, vektorun merkezden uzaklığı nokta3D de tanımlanmıştır
// tekrar tanımı gerekmez.

  public double R()
  {
  //koordinat merkezi ile nokta arasındali mesafe
  return Math.sqrt(xi*xi+xj*xj+xk*xk);
}


public double cosFi()
{
//vektorun i ekseniyle yaptığı açının kosinüs
return Fi/F();
}

public double cosFj()
{
//vektorun j ekseniyle yaptığı açının kosinüs
return Fj/F();
}

public double cosFk()
{
//vektorun k ekseniyle yaptığı açının kosinüsü
return Fk/F();
}

public void topla(vektor3D v)
{
  if(noktaEsittir(v))
  {
  Fi+=v.Fi;
  Fj+=v.Fj;
  Fk+=v.Fk;
  }
}

public void cikar(vektor3D v)
{
  if(noktaEsittir(v))
  {
  Fi-=v.Fi;
  Fj-=v.Fj;
  Fk-=v.Fk;
  }
}

public void vektorelcarp(vektor3D v)
{
  if(noktaEsittir(v))
  {
  double Fi1=Fi;
  double Fj1=Fj;
  double Fk1=Fk;
  Fi=(Fj1*v.Fk-Fk1*v.Fj);
  Fj=-(Fi1*v.Fk-Fk1*v.Fi);
  Fk=(Fi1*v.Fj-Fj1*v.Fi);
  }
}

public double scalarcarp(vektor3D v)
{
  double s=0.0;
  if(noktaEsittir(v))
  {
  s=Fi*v.Fi+Fj*v.Fj+Fk*v.Fk;
  }
  return s;
}



public boolean esittir(vektor3D v)
{
boolean b=((xi==v.xi)&&(xj==v.xj)&&(xk==v.xk));
b=b && ((Fi==v.Fi)&&(Fj==v.Fj)&&(Fk==v.Fk));
return b;
}

public boolean noktaEsittir(vektor3D v)
{
boolean b=((xi==v.xi)&&(xj==v.xj)&&(xk==v.xk));
return b;
}

public boolean buyuktur(vektor3D v)
{
  return (this.F()>v.F());
}

public boolean kucuktur(vektor3D v)
{
  return (this.F()<v.F());
}

public String toString()
{
 String s="baslangıç noktası : "+xi+" i + "+xj+" j + "+xk+" k\n";
      s=s+"Vektör            : "+Fi+" i + "+Fj+" j + "+Fk+" k\n";
 return s;

}


}
