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]
>> 
>> 

Reply via email to