def weight(w)
      OpenStruct.new({
      :x=> w[0] * p0.left + w[1] * p1.left + w[2] * p2.left + w[3] * p3.left,
      :y=> w[0] * p0.top  + w[1] * p1.top  + w[2] * p2.top  + w[3] * p3.top
      })
    end
def weight(w)
      OpenStruct.new({
      :x=> w[0] * p0.left + w[1] * p1.left + w[2] * p2.left + w[3] * p3.left,
      :y=> w[0] * p0.top  + w[1] * p1.top  + w[2] * p2.top  + w[3] * p3.top
      })
    end
Returns the point that is the weighted sum of the specified control points,
 using the specified weights. This method requires that there are four
 weights and four control points.