def new_particles_with_color(original_particles, red_function, green_function, blue_function, attributes_names=None):
    """
    Returns new color particles. These are bound to the 'original_particles' in 
    the sense that they share their attributes, but have additional attributes 
    'red', 'green', and 'blue'.
    :argument original_particles: the particles for which the color needs to be computed
    :argument red_function: function that computes red color of a particle
    :argument green_function: function that computes green color of a particle
    :argument blue_function: function that computes blue color of a particle
    """
    original_particles.add_calculated_attribute("red", red_function, attributes_names=attributes_names)
    original_particles.add_calculated_attribute("green", green_function, attributes_names=attributes_names)
    original_particles.add_calculated_attribute("blue", blue_function, attributes_names=attributes_names)
    original_particles.add_vector_attribute("color", ["red", "green", "blue"])
    return original_particles