По поводу второго сказать ничего не могу. По поводу первого:
Проверять каждую точку + делать преобразование rgb->hsv,
далее разбить на 10 отрезков и смотреть к какому отрезку пренадлежит.
Векторная графика
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
1.
2. Есть обратная задача - построение "градиента"
Код: Выделить всё
void hsv2rgb(double h, double s, double v, double &r, double &g, double &b) {
int i;
double f,p,q,t;
if (s <= 0.0) { /* achromatic */
*r = v;
*g = v;
*b = v;
} else {
if (h >= 1.0) h = 0.0;
h = 6.0 * h;
i = (int)h;
f = h - (double)i;
p = v * (1 - s);
q = v * (1 - (s * f));
t = v * ( 1 - (s * (1 - f)));
switch (i) {
case 0: r = v; g = t; b = p; break;
case 1: r = q; g = v; b = p; break;
case 2: r = p; g = v; b = t; break;
case 3: r = p; g = q; b = v; break;
case 4: r = t; g = p; b = v; break;
case 5: r = v; g = p; b = q; break;
}
}
}
void rgb2hsv(double r, double g, double b, double &h, double &s, double &v) {
double rgbmin,rgbmax;
double rc,bc,gc;
double ht=0.0,st=0.0;
rgbmin = MIN(r,MIN(g,b));
rgbmax = MAX(r,MAX(g,b));
if (rgbmax > 0.0)
st = (rgbmax - rgbmin) / rgbmax;
if (st > 0.0) {
rc = (rgbmax - r) / (rgbmax - rgbmin);
gc = (rgbmax - g) / (rgbmax - rgbmin);
bc = (rgbmax - b) / (rgbmax - rgbmin);
if (r == rgbmax) ht = bc - gc;
else if (g == rgbmax) ht = 2 + rc - bc;
else if (b == rgbmax) ht = 4 + gc - rc;
ht = ht * 60.0;
if (ht < 0.0) ht += 360.0;
}
h = ht / 360.0;
v = rgbmax;
s = st;
}
Код: Выделить всё
double m_Start[3];
double m_End[3];
void GetColor( rgb & color, double factor ) {
double h1, s1, v1;
double h2, s2, v2;
rgb2hsv( m_Start[0], m_Start[1], m_Start[2], h1, s1, v1 );
rgb2hsv( m_End[0], m_End[1], m_End[2], h2, s2, v2 );
double h = h1 + (h2 - h1) * factor;
double s = s1 + (s2 - s1) * factor;
double v = v1 + (v2 - v1) * factor;
hsv2rgb( h, s, v, color[0], color[1], color[2] );
};
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
Посоветуйте, пожалуйста, с чего начать? мне необходимо разобраться в работе программы по преобразованию растров в векторную графику.
простите, пожалуйста, дилетанта, что означают аббревиатуры RGB и HSV
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
Типы спектрального разложения цвета:gregor писал(а):простите, пожалуйста, дилетанта, что означают аббревиатуры RGB и HSV
RGB = Red Green Blue
HSV = Hue, Saturation, Value
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
-
- Сообщения: 497
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
С линейной алгебры.gregor писал(а):Посоветуйте, пожалуйста, с чего начать? мне необходимо разобраться в работе программы по преобразованию растров в векторную графику.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
Нейронные сети рулят.
Довести бы до ума свои наработки по трингуляции растровых изображений...
Довести бы до ума свои наработки по трингуляции растровых изображений...