#!/usr/bin/ruby -w require 'RMagick' i = Magick::ImageList.new i.new_image(500, 400, Magick::HatchFill.new('seashell')) gc = Magick::Draw.new # Draw Bezier curve gc.stroke('red') gc.stroke_width(2) gc.fill_opacity(0) gc.bezier(100,200, 100,100, 250,100, 250,200, 250,300, 400,300, 400,200) # Draw filled circles for the control points gc.fill('gray50') gc.stroke('gray50') gc.fill_opacity(1) gc.circle(100,100, 103,103) gc.circle(250,100, 253,103) gc.circle(250,300, 253,303) gc.circle(400,300, 403,303) # Draw circles on the points the curve passes through gc.fill_opacity(0) gc.circle(100,200, 103,203) gc.circle(250,200, 253,203) gc.circle(400,200, 403,203) # Draw the gray lines between points and control points gc.line(100,100, 100,200) gc.line(250,100, 250,300) gc.line(400,200, 400,300) # Annotate gc.fill('black') gc.stroke('transparent') gc.text(80,220, "'100,200'") gc.text(80, 90, "'100,100'") gc.text(230,90, "'250,100'") gc.text(260,205,"'250,200'") gc.text(230,320,"'250,300'") gc.text(380,320,"'400,300'") gc.text(380,190,"'400,200'") gc.draw(i) #i.display i.write("cbezier6.gif") exit