Cover
 This is the archive Discourse for the Processing (ALPHA) software. Please visit the new Processing forum for current information.
 Processing 1.0 _ALPHA_    Programming Questions & Help    Programs (Moderators: fry, REAS)    Determining original color... « Previous topic | Next topic »

 Pages: 1
 Author Topic: Determining original color...  (Read 303 times)
rgovostes

 Determining original color... « on: Jun 19th, 2004, 1:22am »

I have puzzled over this for a while, and I can't figure out if what I'm trying to do is possible. As many of you have experience with such things, I was hoping one could help?

I am trying to determine the shade of red and the transparency used to tint a graphic. I know that what was once white is now RGB(255, 171, 171) and once black is RGB(84, 0, 0).

I believe the function for blending two colors is something like this...
Code:
 function blendColors(color one, color two, float ratio) {    float r, g, b;    r = red(one) * ratio + red(two) * (1 - ratio);    g = green(one) * ratio + green(two) * (1 - ratio);    b = blue(one) * ratio + blue(two) * (1 - ratio);    return color(r, g, b); }

You could re-write one of these to find the value of a in terms of a color value, like
Code:
 255 * a + g * (1 - a) = 171    .'. a = (171 - g) / (255 - g)

But for red you get "a = 1" which it does not...

Any help would be appreciated.
 « Last Edit: Jun 19th, 2004, 1:22am by rgovostes »
rgovostes

 Re: Determining original color... « Reply #1 on: Jun 19th, 2004, 1:49am »

A friend determined it to be RGB(255, 0, 0) at 33% opacity, which is true (255 / 84 = 3; 255 / 171 = 1.5), but is there a way to compute this?
narain

 Re: Determining original color... « Reply #2 on: Jun 19th, 2004, 4:54pm »

After a little algebra, I got this:

Find the amount of change in the colour, ie. final (tinted) value minus original value. In your case, for the red channel, the change from black is (84 - 0) = 84 and change from white is (255 - 255) = 0.
Call these values dr0 and dr1.

Then...
ratio = (dr0 + dr1) / 255;
tint_red = 255 * dr0 / (dr0 + dr1);

So ratio = (84 + 0) / 255 = 0.33
and tint_red = 255 * 84 / (84 + 0) = 255

And hey presto, it's RGB (255, something, something) at 33% opacity.

You can use the second formula on the changes in green and blue to get the tint colour. (ratio should come out to be the same for all of them, otherwise you have been deceived: it's not a simple tint.)
 Pages: 1

 Forum Jump: ----------------------------- Discussion -----------------------------  - Community, Collaboration, Status   - Events, Publications, Propaganda   - General Processing Discussion ----------------------------- Programming Questions & Help -----------------------------  - Syntax => Programs   - Integration ----------------------------- Topics & Contributions -----------------------------  - Tools   - Responsive Form, Games   - Information Visualization   - Simulation, Artificial Life   - Tangible Computing   - Automated Systems   - Sound   - Video, Camera   - Beyond Categories ----------------------------- Suggestions -----------------------------  - Software Suggestions   - Website, Reference, Example Suggestions ----------------------------- Bugs -----------------------------  - Software Bugs   - Website, Reference, Example Bugs   - Bug Fixes, Implemented Suggestions ----------------------------- Teaching -----------------------------  - Course Blueprints   - Theory and Practice « Previous topic | Next topic »