69 {
70 double hsv[3] = {0, 0, 0};
71 double rgb[3] = {0, 0, 0};
72
74 CU_ASSERT_DOUBLE_EQUAL(rgb[0], 0, DBL_EPSILON);
75 CU_ASSERT_DOUBLE_EQUAL(rgb[1], 0, DBL_EPSILON);
76 CU_ASSERT_DOUBLE_EQUAL(rgb[2], 0, DBL_EPSILON);
77
78 hsv[0] = 2/3.;
79 hsv[1] = 1;
80 hsv[2] = 1;
82 CU_ASSERT_DOUBLE_EQUAL(rgb[0], 0., DBL_EPSILON);
83 CU_ASSERT_DOUBLE_EQUAL(rgb[1], 0, DBL_EPSILON);
84 CU_ASSERT_DOUBLE_EQUAL(rgb[2], 1, DBL_EPSILON);
85
86 hsv[0] = 7/12.;
87 hsv[1] = 1;
88 hsv[2] = 0.5;
90 CU_ASSERT_DOUBLE_EQUAL(rgb[0], 0, DBL_EPSILON);
91 CU_ASSERT_DOUBLE_EQUAL(rgb[1], 0.25, DBL_EPSILON);
92 CU_ASSERT_DOUBLE_EQUAL(rgb[2], 0.5, DBL_EPSILON);
93
94 hsv[0] = 1/3.;
95 hsv[1] = 0.5;
96 hsv[2] = 1;
98 CU_ASSERT_DOUBLE_EQUAL(rgb[0], 0.5, DBL_EPSILON);
99 CU_ASSERT_DOUBLE_EQUAL(rgb[1], 1, DBL_EPSILON);
100 CU_ASSERT_DOUBLE_EQUAL(rgb[2], 0.5, DBL_EPSILON);
101
102 hsv[0] = 0.5;
103 hsv[1] = 0.5;
104 hsv[2] = 0.4;
106 CU_ASSERT_DOUBLE_EQUAL(rgb[0], 0.2, DBL_EPSILON);
107 CU_ASSERT_DOUBLE_EQUAL(rgb[1], 0.4, DBL_EPSILON);
108 CU_ASSERT_DOUBLE_EQUAL(rgb[2], 0.4, DBL_EPSILON);
109}
rt_errorstate rt_util_hsv_to_rgb(double hsv[3], double rgb[3])