def arc args, key_args
      extent, start, style = key_args.values_at(*%w{extent start style})
      
      proc do |tkaroid, cos_r, sin_r|
        x = tkaroid.x
        y = tkaroid.y
        params = tkaroid.params

        cx, cy, width, height = args.map {|arg| arg[params] rescue arg}

        rcx = x + cx * cos_r - cy * sin_r
        rcy = y + cx * sin_r + cy * cos_r
        
        coords = [
          rcx - width,  rcy - height,
          rcx + width,  rcy + height ]
        
        ## possible to skip below if no changes?
        config = {}
        handle_generic_config(config, params, key_args)
        
        if extent
          config[:extent] = extent[params] rescue extent
        end
        if start
          config[:start] = start[params] rescue start
          config[:start] -= tkaroid.r * RADIANS_TO_DEGREES
        end
        if style
          config[:style] = style[params] rescue style
        end

        [TkcArc, coords, config]
      end
    end
def arc args, key_args
      extent, start, style = key_args.values_at(*%w{extent start style})
      
      proc do |tkaroid, cos_r, sin_r|
        x = tkaroid.x
        y = tkaroid.y
        params = tkaroid.params

        cx, cy, width, height = args.map {|arg| arg[params] rescue arg}

        rcx = x + cx * cos_r - cy * sin_r
        rcy = y + cx * sin_r + cy * cos_r
        
        coords = [
          rcx - width,  rcy - height,
          rcx + width,  rcy + height ]
        
        ## possible to skip below if no changes?
        config = {}
        handle_generic_config(config, params, key_args)
        
        if extent
          config[:extent] = extent[params] rescue extent
        end
        if start
          config[:start] = start[params] rescue start
          config[:start] -= tkaroid.r * RADIANS_TO_DEGREES
        end
        if style
          config[:style] = style[params] rescue style
        end

        [TkcArc, coords, config]
      end
    end
arcX,Y,W,H,key:val...

 (X,Y) is center, W is width, H is height.
 This differs from Tk because it's better!
 Rotation may look strange if width != height

  extent angle
  start angle
  style sty  (pieslice, chord, or arc)