示例#1
0
void GetHSV(double r, double g, double b, double& h, double& s, double& v)
{
	v=dblmax(r, dblmax(g, b));
	double d=v-dblmin(r, dblmin(g, b));
	if(d==0.0) {s=0.0; h=0.0; /*std::cerr << "Error in HSV conversion\n";*/ return;}
	s=d/v;
	if(r==v)
	{
		if(g>=b)
			h = 0.167 * (g-b)/d;
		else
			h = 0.167 * (g-b)/d + 1.0;
	}
	if(g==v) h = 0.167 * (b-r)/d + 0.333;
	if(b==v) h = 0.167 * (r-g)/d + 0.667;
	v/=255.0;
}
示例#2
0
void clip_box(box_t *b, box_t *bounds) {
    b->xmin = dblmax(b->xmin, bounds->xmin);
    b->ymin = dblmax(b->ymin, bounds->ymin);
    b->xmax = dblmin(b->xmax, bounds->xmax);
    b->ymax = dblmin(b->ymax, bounds->ymax);
}