procedure RGB_To_HSV(r,g,b:real; var h,s,v:real)

  begin
     max:=Maximum(r,g,b);
     min:=Minimum(r,g,b);
     v:=max

     if max <> 0 then
        s:=(max-min)/max
     else s:=0
     if s = 0 then
        h:=UNDEFINED
     else
        begin
           delta:=max-min
           if r = max then
              h:=(g-b)/delta
           else if g = max then
              h:=2+(b-r)/delta
           else if b = max then
              h:=4+(b-r)/delta;
           h:=h*60
           if h < 0 then
              h:=h+360
        end
  end