[C#]RGBtoHVS

Vector3 RGB2HSV(float r, float g, float b)
{
Vector3 vHVS; //x,y,z;
float min, max, delta;

min = Mathf.Min(r, g, b);
max = Mathf.Max(r, g, b);

vHVS.y = max / 255.0f * 100.0f; // v
delta = max - min;

if (max != 0)
vHVS.z = delta / max * 100.0f; // s

else {
// r = g = b = 0 // s = 0, v is undefined
vHVS.z = 0; //s
vHVS.x = -1; //h
return vHVS;
}

if (r == max)
vHVS.x = (g - b) / delta; // between yellow & magenta //h
else if (g == max)
vHVS.x = 2 + (b - r) / delta; // between cyan & yellow //h
else
vHVS.x = 4 + (r - g) / delta; // between magenta & cyan //h

vHVS.x *= 60; // degrees //h

if (vHVS.x < 0)
vHVS.x += 360; //h

return vHVS;
}

댓글

이 블로그의 인기 게시물

[게임과 특허]사례모음

[Direct3D,DX10,DX11] Hull,Domain,Geometry Shader로 보는 DX11과 DX10의 차이점.