/** * DO NOT change this interface in any way * Your program will be compiled against this interface, so your methods * must have exactly these signatures or your program will fail to compile. */ public interface IVector3D { /** * @param that anohter Vector3D * @return the dot product of this vector and that. */ public int dot(Vector3D that); /** * @param that another Vector3D * @return the cross product of this vector and that. */ public Vector3D cross(Vector3D that); /** * @param scalar an integer we are multiplying this Vector3D by * @return scalar*this */ public Vector3D scalarMultiply(int scalar); /** * @param that a Vector3D we are adding this vector to * @return scalar*this */ public Vector3D add(Vector3D that); /** * @param that a Vector3D we are scalar subtractiong this vector from * @return this - that */ public Vector3D subtract(Vector3D that); /** * @return the length of this vector */ public double magnitude(); /** * @param that another Vector3D * @return the angle between this and that in radians in [0,π] */ public double angleBetween(Vector3D that); }