def add_control_point(cp)
      raise ArgumentError, "Invalid argument 'cp'. Expected ControlPoint, got #{cp.class}." unless cp.is_a?(ControlPoint)
      @control_points << cp unless @associated_control_points[cp]
      @associated_control_points[cp] = true
    end
def add_control_point(cp)
      raise ArgumentError, "Invalid argument 'cp'. Expected ControlPoint, got #{cp.class}." unless cp.is_a?(ControlPoint)
      @control_points << cp unless @associated_control_points[cp]
      @associated_control_points[cp] = true
    end
Adds a ControlPoint instance to this Beam.

 @param [ControlPoint] cp a control point instance to be associated with this beam