private void calculateNext() {
        addPoints(next_point, point_vector, next_point);
        if (!isPointLegal(next_point)) {
            addPoints(starting_point, starting_point_vector, starting_point);
            clonePoints(starting_point, next_point);
        }    
    }