
Maxim
24.03.2017
01:51:04
Всем привет
Народ, как сравнить два цвета (ргб)
У меня есть массив "эталонных" цветов
let colors = [
{name :'Черный', rgb : [0,0,0]},
{name :'Бежевый', rgb : [245, 245, 220]},
{name :'Белый', rgb : [255, 255, 255]},
{name :'Бордо', rgb : [176, 0, 0]},
{name :'Желтый', rgb : [255, 255, 0]},
{name :'Зеленый', rgb : [0, 255, 0]},
{name :'Золотой', rgb : [255, 215, 0]},
{name :'Коралловый', rgb : [255, 127, 80]},
{name :'Коричневый', rgb : [150, 75, 0]},
{name :'Красный', rgb : [255, 0, 0]},
{name :'Оранж', rgb : [255, 165, 0]},
{name :'Розовый', rgb : [255, 192, 203]},
{name :'Серебряный', rgb : [192, 192, 192]},
{name :'Серый', rgb : [128, 128, 128]},
{name :'Синий', rgb : [0, 0, 255]},
{name :'Фиолетовый', rgb : [128, 0, 128]},
]
И есть функция, которая должна опредеоить, какой из этих цветов ближе к заданному
function distance(v1, v2){
var i,
d = 0;
for (i = 0; i < v1.length; i++) {
d += (v1[i] - v2[i])*(v1[i] - v2[i]);
}
return Math.sqrt(d);
};
function getColorName(colorArray) {
let closestColor = "ОШИБКА";
let currentDiff = 9999999;
colors.map((color) => {
let diff = distance(color.rgb, colorArray);
if (diff < currentDiff) {
closestColor = color.name;
currentDiff = diff;
}
});
return closestColor;
}

Aleksandr
24.03.2017
08:10:26
пока я ныл - пришла идея давать основному контейнеру оверфлоу хидден и задавать параметры непосредственно конту с svg так что бы по запросам уже можно было играться
кстати сразу замечу, svg text как полноправные объекты не воспринимается svgшкой, он их обрезает без зазрения совести
короче, svg ещё сырое как осеннее небо, ну может как апрель. как говорят в Севастополе - нужно немножечко потерпеть, SMILL уже depricated, а грамотной поддержки в ES ещё нет, вот и впаривают зелёноносочники свои библиотеки по 150$. у меня всё. продолжаю погружение
http://s.pikabu.ru/images/big_size_comm/2012-03_5/13325375799772.jpg