Das Skalarprodukt kommt mit rein beim Quadrieren, die Differenz der Skalarprodukte hat aber nicht wirklich viel aussagekraft. (255, 0, 0) würde dann zum Beispiel identisch mit (0, 0, 255) sein.
In Pseudocode eher so:
Delphi-Quellcode:
type
TRGBColor = class
public
r, g, b: Integer;
constructor Create(ar, ag, ab: Integer);
end;
var
color1, color2, colorDiff: TRGBColor;
distance: Double;
begin
colorDiff := TRGBColor.Create(color2.r-color1.r, color2.g-color1.g, color2.b-color1.b);
distance := sqrt(colorDiff.r*colorDiff.r + colorDiff.g*colorDiff.g + colorDiff.b*colorDiff.b);
.
.
end;
Geometrisch interpretiert hast du einen Farbwürfel, und ermittelst mit der Differenz den Vektor von color1 zu color2. Je kürzer der ist, desto - wortwörtlich - näher sind die Farben beieinander.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)