public Vector transform2D(double angle,double aboutX,double aboutZ,double translateX,double translateZ){
  angle=Math.toRadians(angle);
  double x=this.x - aboutX;
  double z=this.z - aboutZ;
  double x2=x * Math.cos(angle) - z * Math.sin(angle);
  double z2=x * Math.sin(angle) + z * Math.cos(angle);
  return new Vector(x2 + aboutX + translateX,y,z2 + aboutZ + translateZ);
}

public Vector transform2D ( double angle , double aboutX , double aboutZ , double translateX , double translateZ ) { angle = Math . toRadians ( angle ) ; double x = this . x - aboutX ; double z = this . z - aboutZ ; double x2 = x * Math . cos ( angle ) - z * Math . sin ( angle ) ; double z2 = x * Math . sin ( angle ) + z * Math . cos ( angle ) ; return new Vector ( x2 + aboutX + translateX , y , z2 + aboutZ + translateZ ) ; }
perform a 2d transformation on this vector and return a new one .
