コード例 #1
0
ファイル: hsv_to_rgb.c プロジェクト: Horsell/42
void	hsv_to_rgb(t_env *e, double p, double q, double t)
{
	double	hh;
	double	ff;
	int		i;

	hh = e->h / 60;
	i = floor(hh);
	ff = hh - i;
	p = e->v * (1.0 - e->s);
	q = e->v * (1.0 - (e->s * ff));
	t = e->v * (e->s * (1.0 - ff));
	p *= 250;
	q *= 250;
	t *= 250;
	(i == 0) ? hsv0(e, p, t) : 1;
	(i == 1) ? hsv1(e, p, q) : 1;
	(i == 2) ? hsv2(e, p, t) : 1;
	(i == 3) ? hsv3(e, p, q) : 1;
	(i == 4) ? hsv4(e, p, t) : 1;
	if (i == 5)
	{
		e->r = e->v;
		e->g = p;
		e->b = q;
	}
}
コード例 #2
0
void Hsv::hsv2rgb(osg::Vec4& rgb, const osg::Vec4& hsv)
{
   osg::Vec3 hsv3(hsv[0], hsv[1], hsv[2]);
   osg::Vec3 rgb3;
   hsv2rgb(rgb3, hsv3);

   // Copy to output
   rgb[RED]   = rgb3[RED];
   rgb[GREEN] = rgb3[GREEN];
   rgb[BLUE]  = rgb3[BLUE];

   // Just pass alpha
   rgb[ALPHA] = hsv[ALPHA];
}