Hi All,
Am working on understanding a code snippet for assigning a color value to RGB values. Would appreciate any insights.
The original code snippet was copied from here:
const int distinctRGB[22][3] = {{255, 255, 255},{0,0,0},{128,0,0},{255,0,0},{255, 200, 220},{170, 110, 40},{255, 150, 0},{255, 215, 180},{128, 128, 0},{255, 235, 0},{255, 250, 200},{190, 255, 0},{0, 190, 0},{170, 255, 195},{0, 0, 128},{100, 255, 255},{0, 0, 128},{67, 133, 255},{130, 0, 150},{230, 190, 255},{255, 0, 255},{128, 128, 128}};
const String distinctColors[22] = {"white","black","maroon","red","pink","brown","orange","coral","olive","yellow","beige","lime","green","mint","teal","cyan","navy","blue","purple","lavender","magenta","grey"};
String closestColor(int r,int g,int b) {
String colorReturn = "NA";
int biggestDifference = 1000;
for (int i = 0; i < 22; i++) {
if (sqrt(pow(r - distinctRGB[i][0],2) + pow(g - distinctRGB[i][1],2) + pow(b - distinctRGB[i][2],2)) < biggestDifference) {
colorReturn = distinctColors[i];
biggestDifference = sqrt(pow(r - distinctRGB[i][0],2) + pow(g - distinctRGB[i][1],2) + pow(b - distinctRGB[i][2],2));
}
}
return colorReturn;
}
I set it up as a sketch
//===Global constants and variables
// RGB -> color mapping data
const int distinctRGB[22][3] = {{255, 255, 255}, {0, 0, 0}, {128, 0, 0}, {255, 0, 0}, {255, 200, 220}, {170, 110, 40}, {255, 150, 0}, {255, 215, 180}, {128, 128, 0}, {255, 235, 0}, {255, 250, 200}, {190, 255, 0}, {0, 190, 0}, {170, 255, 195}, {0, 0, 128}, {100, 255, 255}, {0, 0, 128}, {67, 133, 255}, {130, 0, 150}, {230, 190, 255}, {255, 0, 255}, {128, 128, 128}};
const String distinctColors[22] = {"white", "black", "maroon", "red", "pink", "brown", "orange", "coral", "olive", "yellow", "beige", "lime", "green", "mint", "teal", "cyan", "navy", "blue", "purple", "lavender", "magenta", "grey"};
// === Setup code, runs once =========================
void setup() {
}
// === Main code, loops endlessly ===================
void loop()
{
void matchColor();
}
//===Breakout of functions ===========================
void matchColor()
{
String closestColor(int r, int g, int b)
{
String colorReturn = "NA";
int biggestDifference = 1000; // 1000 > (255*3=765)
for (int i = 0; i < 22; i++)
{
if (sqrt(pow(r - distinctRGB[i][0], 2) + pow(g - distinctRGB[i][1], 2) + pow(b - distinctRGB[i][2], 2)) < biggestDifference)
{
colorReturn = distinctColors[i];
biggestDifference = sqrt(pow(r - distinctRGB[i][0], 2) + pow(g - distinctRGB[i][1], 2) + pow(b - distinctRGB[i][2], 2));
}
}
return colorReturn;
}
}
... and am getting the following error at
String closestColor(int r, int g, int b)
{
a function-definition is not allowed here before '{' token