question: 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 ) ; }
target:  Perform a 2D transformation on this vector and return a new one.