RobynsVeil opened this issue on Jan 24, 2009 · 490 posts
bagginsbill posted Sun, 25 January 2009 at 8:21 AM
I am preparing some little demos and a prop for us to share while examining the Diffuse node.
Meanwhile, you just jumped into a very interesting area, i.e. what color is GREEN - RED, i.e. what is RGB(-1, 1, 0)? You concluded it is green, but it isn't.
GREEN - RED is GREEN == false
GREEN - RED looks GREEN == true
I'm going to make a claim that this is a new color for which we have no name. Let's call it X. I will prove it is different from GREEN quite simply by demonstrating that when I manipulate this color as well as the color GREEN in a reproducible way, I end up with different results.
I know this is very much math speak but it is really important. You've already established some muddy thinking, even though you are quite capable of clear and logical thinking. So I insist that I have to teach you to think clearly. Since much of how we think is mediated by the language we use, I will insist on the language of mathematics for this.
So. Consider a math function, f, which has no random factors in it. Such a function is reproducible in all situations. Most of the math we deal with is like this. So the importance of this point is this:
Given two quantities, X and Y, which appear to be the same, if I can demonstrate a reproducible function for which f(X) does not equal f(Y), then I have proved that X does not equal Y.
In math:
f(X) != f(Y) ==> X != Y
the symbol != means "does not equal" and the symbol "==>" here means "implies" or "proves".
Ready? Here's my function:
f(x) = (x + WHITE) / 2
All I'm doing is taking the average of this color and WHITE. WHITE is [1, 1, 1].
Now let's try that with GREEN.
f(GREEN)
{ replace GREEN with its definition, which is the tuple [0, 1, 0] }
= f([0, 1, 0])
{ expand using the definition if our function, f(x) = (x + WHITE) / 2 }
= ([0, 1, 0] + [1, 1, 1]) / 2
{ do the arithmetic, element by element in the tuple }
= [1, 2, 1] / 2
{ notice another example here of a hyper color, the green part is 2 right now}
{ anyway, just divide by two now }
= [.5, 1, .5]
Now we try that with our mystery color, X.
f(X)
= f([-1, 1, 0])
= ([-1, 1, 0] + [1, 1, 1]) / 2
= [0, 2, 1] / 2
= [0, 1, .5]
This is a different outcome, one you can actually see. Therefore, we've proved that GREEN - RED is not the same as GREEN, even though it looks exactly the same when we view it as a color.
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)