Re: RGBColor to Hue?
- To: mathgroup at smc.vnet.net
- Subject: [mg31039] Re: RGBColor to Hue?
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Fri, 5 Oct 2001 01:22:53 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Dave Park wanted a transformation that will convert an RGBColor specification to Hue[h,s,b]. I spent some time working on this a few years ago, and found that the definitions below perform a perfect transformation (as far as I can tell). This is an extension of the undocumented function ToColor[ ]. (***********************) Unprotect[ToColor]; ToColor[RGBColor[red_,grn_,blu_],Hue]/;red>=grn>=blu:= Hue[(grn-blu)/(red-blu)/6, (red-blu)/red, red ] ToColor[RGBColor[red_,grn_,blu_],Hue]/;grn>=red>=blu:= Hue[1/3-(red-blu)/(grn-blu)/6, (grn-blu)/grn, grn ] ToColor[RGBColor[red_,grn_,blu_],Hue]/;grn>=blu>=red:= Hue[1/3+(blu-red)/(grn-red)/6, (grn-red)/grn, grn ] ToColor[RGBColor[red_,grn_,blu_],Hue]/;blu>=grn>=red:= Hue[2/3-(grn-red)/(blu-red)/6, (blu-red)/blu,blu ] ToColor[RGBColor[red_,grn_,blu_],Hue]/;blu>=red>=grn:= Hue[2/3+(red-grn)/(blu-grn)/6, (blu-grn)/blu,blu ] ToColor[RGBColor[red_,grn_,blu_],Hue]/;red>=blu>=grn:= Hue[1-(blu-grn)/(red-grn)/6, (red-grn)/red,red ] (*********************) Example: In[8]:= ToColor[RGBColor[0.76, 1., 0.7], Hue] Out[8]= Hue[0.3, 0.3, 1.] My definitions compute the (RGBColor --> Hue) transformation above. The built-in ToColor[ ] definition performs the inverse operation below and gives some indication that my transformation is correct. I think you can use either to specify the color of graphics and get the same result. In[9]:= ToColor[Hue[0.3, 0.3, 1], RGBColor] Out[9]= RGBColor[0.76, 1., 0.7] This enhancement to the undocumented ToColor[ ] function is one of the handy enhancements provided in my ColorPlot package posted at http://www.mathsource.com/cgi-bin/msitem?0210-700 --- Regards, Ted