public VectorPoint subtract(double x, double y, double z) {
        return of(this.position.sub(x, y, z), this.direction);
    }
An immutable and serializable vector + direction object
helper/src/main/java/me/lucko/helper/serialize/VectorPoint.java