Changeset 2217
- Timestamp:
- Jan 13, 2013, 11:44:30 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lol/image/color.h
r2216 r2217 85 85 static vec3 RGBToHSV(vec3 src) 86 86 { 87 float offset = 0.f; 87 float K = 0.f; 88 89 if (src.g < src.b) 90 src = src.rbg, K = -1.f; 88 91 89 92 if (src.r < src.g) 90 src = src.grb, offset = -2.f / 6.f; 91 92 if (src.g < src.b) 93 src = src.rbg, offset = -1.f - 4.f * offset; 94 95 if (src.r < src.g) 96 src = src.grb, offset = -2.f / 6.f - offset; 97 98 float chroma = src.r - src.b; 99 return vec3(abs((src.g - src.b) / (6.f * chroma + 1e-40f) + offset), 100 chroma / (src.r + 1e-40f), 93 src = src.grb, K = -2.f / 6.f - K; 94 95 float chroma = src.r - min(src.g, src.b); 96 return vec3(abs(K + (src.g - src.b) / (6.f * chroma + 1e-20f)), 97 chroma / (src.r + 1e-20f), 101 98 src.r); 102 99 } -
trunk/test/unit/color.cpp
r2207 r2217 87 87 } 88 88 } 89 90 LOLUNIT_TEST(RGBToHSV) 91 { 92 for (int r = 0; r < 20; r++) 93 for (int g = 0; g < 20; g++) 94 for (int b = 0; b < 20; b++) 95 { 96 vec3 v1 = vec3(r / 20.f, g / 20.f, b / 20.f); 97 vec3 v2 = Color::HSVToRGB(Color::RGBToHSV(v1)); 98 99 LOLUNIT_ASSERT_DOUBLES_EQUAL(v1.r, v2.r, 0.0001); 100 LOLUNIT_ASSERT_DOUBLES_EQUAL(v1.g, v2.g, 0.0001); 101 LOLUNIT_ASSERT_DOUBLES_EQUAL(v1.b, v2.b, 0.0001); 102 } 103 } 89 104 }; 90 105
Note: See TracChangeset
for help on using the changeset viewer.