# Vector3

This class represents a 3D vector with x, y, and z components.

## public Vector3(double x, double y, double z)

Constructor for creating a new vector.

## public Vector3 copy()

This method returns a new vector with the same values as the current vector.

## public static Vector3 zero()

This static method returns a new vector with all components set to zero.

## public double magnitude(): double

This method returns the magnitude of the vector.

## public Vector3 normalize()

This method returns the normalized vector. It throws an `IllegalArgumentException` if the vector is the zero vector.

## public Vector3 subtract(Vector3 other)

This method subtracts another vector from the current vector and returns the result as a new vector.

## public Vector3 add(Vector3 other)

This method adds another vector to the current vector and returns the result as a new vector.

## public Vector3 multiply(double scalar)

This method multiplies the vector by a scalar and returns the result as a new vector.

## public Vector3 divide(double scalar)

This method divides the vector by a scalar and returns the result as a new vector. It throws an `IllegalArgumentException` if the scalar is zero.

## public Vector3 negate()

This method negates the vector and returns the result as a new vector.

## public Vector3 rotate(double radX, double radY, double radZ)

This method rotates the vector around the X, Y, and Z axes by the specified angles in radians and returns the result as a new vector.

## public Vector3 rotate(Vector3 rotation)

This method rotates the vector around the X, Y, and Z axes.

## public Vector3 rotateX(double angle)

This method rotates the vector around the X axis by the specified angle in radians and returns the result as a new vector.

## public Vector3 rotateY(double angle)

This method rotates the vector around the Y axis by the specified angle in radians and returns the result as a new vector.

## public Vector3 rotateZ(double angle)

This method rotates the vector around the Z axis by the specified angle in radians and returns the result as a new vector.

## public double distanceSq(Vector3 compare)

This method returns the squared distance between the current vector and another vector.

## public double distance(Vector3 compare)

This method returns the distance between the current vector and another vector.

## public double distanceToLine(Vector3 lineStart, Vector3 lineEnd)

This method calculates the distance from the current vector to a line defined by two points and returns the result.

## public Vector3 closest(Vector3 ... vectors)

This method returns the closest vector to the current vector from a list of vectors.

## public Vector3 map(VectorMapFunction function)

This method applies a `VectorMapFunction` to the current vector and returns the result.

## public String toString()

This method returns a string representation of the vector.