As far as I know, RGB does not have 360x360x360 number of color but 256x256x256.
E.g. from 0,0,0 to 255,255,255. Cheers, Daniel On 23.01.2010, at 22:12, SamGoody wrote: > To clarify. > > 1. Mootools's conversion is highly accurate. > When I said mine is moreso, that is simply because I round a little > later in the conversion - the difference between our results is never > more than one out of 16.5 million colors away - entirely negligible. > 2. RGB has 360 x 360 x 360 possible values. HSB has 360 x 100 x 100 > values. Not even close to 1:1. > 3. Post is based on memory - my work was done awhile ago, have to > crack it out and dust it off. > > > > On Jan 23, 10:43 pm, SamGoody <[email protected]> wrote: >> Conversion from HSL to RGB is nowhere near 1:1, no matter what system >> you use. >> >> This has nothing to do with Mootools, it has to do with the way the >> colors are represented. >> >> For example; where the saturation and value are 0, the RGB output will >> be (0,0,0) no matter what hue. That means that all 360 values on the >> HSL system translate to only one color on the RGB system. >> If you go from HSL(200,0,0) -> RGB(0,0,0) -> HSL(0,0,0).... you will >> be back to the color you started with (or very very close) even though >> the numbers have changed drastically. >> >> Rounding just aggravates the issue, but the majority of numbers wont >> un-convert to the original, no matter how you do it. >> >> In graphics editors such as the GIMP, they figure that if they get >> back to the same color (or very close), you won't notice or care if >> the HSL numbers have changed. >> >> I wrote a class to convert to and from HSB/L/V/G that is shorter and >> more accurate than the one used in Mootools (besides the added support >> for HSB and HSG). Unfortunately, due to issues with the forge, its >> just sitting pretty. >> >> For playing around, you can use this >> page:http://siteroller.net/projects/color/index.htm >> It's an unofficial test page for some of my work on colors. >> Top column is my class, bottom is Val's. >> >> On Jan 22, 2:20 pm, Barry van Oudtshoorn <[email protected]> >> wrote: >> >>> You'll probably find that this is because the HSL representation uses >>> different value ranges for its components than RGB. As far as I'm >>> aware, HSL can represent slightly fewer colours (in the context of RGB >>> media) than RGB. I think you will also find that most tools that allow >>> you to arbitrarily choose your representation will also exhibit this >>> lack of reflexivity; I think that Photoshop & the GIMP both also use >>> integers to represent HSL colours. >> >>> Clearly this isn't desired behaviour in your application, but I'm not >>> so sure if it really is s bug in MooTools. A limitation, perhaps. It >>> might be worthwhile producing a colour palette for your application, >>> and "snapping" all values to that palette. Perhaps only allow colours >>> in RGB whose values are multiples of 8 or something. >> >>> On Friday, January 22, 2010, woomla <[email protected]> wrote: >>>> Playing around with Color conversions, I've found out that conversion >>>> from RGB to HSB and back to RGB not yield in the same result. Should >>>> it not? Probably because the HSB values should be float. Anyhow, I've >>>> written this JSSpec test to easily see what's wrong. >> >>>> describe('Color conversions vice-versa', { >> >>>> 'Conversion from RGB to HSB to RGB should not change': function () >>>> { >>>> var color = new Color([10, 11, 12], 'rgb'); >>>> value_of(new Color(color.hsb, 'hsb').rgb).should_be([10, 11, >>>> 12]); >>>> }, >> >>>> 'Conversion from HSB to RGB to HSB should not change': function () >>>> { >>>> var color = new Color([210, 17, 5], 'hsb'); >>>> value_of(new Color(color.rgb, 'rgb').hsb).should_be([210, 17, >>>> 5]); >>>> }, >> >>>> 'Conversion from RGB to HEX to RGB should not change': function () >>>> { >>>> var color = new Color([10, 11, 12], 'rgb'); >>>> value_of(new Color(color.hex).rgb).should_be([10, 11, 12]); >>>> }, >> >>>> 'Conversion from HEX to RGB to HEX should not change': function () >>>> { >>>> var color = new Color('0A0B0C'); >>>> value_of(new Color(color.rgb, 'rgb').hex).should_be('#0a0b0c'); >>>> }, >> >>>> 'Conversion from HSB to HEX to HSB should not change': function () >>>> { >>>> var color = new Color([210, 17, 5], 'hsb'); >>>> value_of(new Color(color.hex).hsb).should_be([210, 17, 5]); >>>> }, >> >>>> 'Conversion from HEX to HSB to HEX should not change': function () >>>> { >>>> var color = new Color('0A0B0C'); >>>> value_of(new Color(color.hsb, 'hsb').hex).should_be('#0a0b0c'); >>>> } >> >>>> }); >> >>> --http://barryvan.com.au/ >>> [email protected] >> >>
