|
|
On 11/26/2016 1:23 PM, [GDS|Entropy] wrote:
> Here is the code I use for working with HCY in Processing, I know this
> isn't SDL but I do not at present have time to convert it and I thought
> someone might find it useful.
>
> For me it is wonderful because using only one array I can get the range and
> intensity of colors I want far more easily than I can with other models, I
> just pipe it into H and set C and Y to the value below...though it really
> gets interesting when you plug other arrays into Y in particular. That
> works out very well for 2 chemical RD systems obviously, which is what I
> use it for.
>
> // H Varies
> // C = 100 [gives full brightness]
> // Y = 75 or varies. [gives full saturation]
> public color HCYtoRGB(float h, float c, float y)
> {
> final PVector REC709y = new PVector(0.2126, 0.7152, 0.0722);
> PVector hcy = new PVector(h, c, y);
>
> float r = constrain(abs(6 * h - 3) - 1, 0, 1);
> float g = constrain(2 - abs(6 * h - 2), 0, 1);
> float b = constrain(2 - abs(6 * h - 4), 0, 1);
>
> PVector rgb = new PVector(r, g, b);
>
> float z = rgb.dot(REC709y);
>
> if (z >= hcy.z)
> {
> hcy.y *= hcy.z / z;
> }
> else if (z < 1)
> {
> hcy.y *= (1 - hcy.z) / (1 - z);
> }
>
> rgb.sub(z, z, z);
> rgb.mult(hcy.y);
> rgb.add(hcy.z, hcy.z, hcy.z);
>
> rgb.mult(255);
>
> return color(rgb.x, rgb.y, rgb.z);
> }
>
> I hope this is useful to someone. Have fun. :)
>
> I have a render (Processing not Pov) of the predator-prey RD system by
> Sirohi et. al. 2015 which will go up on Flickr soon which uses this.
>
> Ian
>
I have never heard of HCY. Is there any documentation about it?
Mike
Post a reply to this message
|
|