Recent Posts
Selamat datang di Coding Delphi Land Weblog kumpulan source code pemogram delphi
(Bukan maksud untuk menggurui tetapi marilah kita berbagi ilmu tuk perkembangan kemajuan teknologi kita
Selasa, 17 November 2009
RGB to HVS
type
THSV = record // hue saturation value (HSV)
Hue , Sat , Val : Double;
end;
{....}
function RGB2HSV (R,G,B : Byte) : THSV;
var
Min_, Max_, Delta : Double;
H , S , V : Double ;
begin
H := 0.0 ;
Min_ := Min (Min( R,G ), B);
Max_ := Max (Max( R,G ), B);
Delta := ( Max_ - Min_ );
V := Max_ ;
If ( Max_ <> 0.0 ) then
S := 255.0 * Delta / Max_
else
S := 0.0 ;
If (S <> 0.0) then
begin
If R = Max_ then
H := (G - B) / Delta
else
If G = Max_ then
H := 2.0 + (B - R) / Delta
else
If B = Max_ then
H := 4.0 + (R - G) / Delta
End
else
H := -1.0 ;
H := H * 60 ;
If H < 0.0 then H := H + 360.0;
with Result Do
begin
Hue := H ; // Hue -> 0..360
Sat := S * 100 / 255; // Saturation -> 0..100 %
Val := V * 100 / 255; // Value - > 0..100 %
end;
end;
THSV = record // hue saturation value (HSV)
Hue , Sat , Val : Double;
end;
{....}
function RGB2HSV (R,G,B : Byte) : THSV;
var
Min_, Max_, Delta : Double;
H , S , V : Double ;
begin
H := 0.0 ;
Min_ := Min (Min( R,G ), B);
Max_ := Max (Max( R,G ), B);
Delta := ( Max_ - Min_ );
V := Max_ ;
If ( Max_ <> 0.0 ) then
S := 255.0 * Delta / Max_
else
S := 0.0 ;
If (S <> 0.0) then
begin
If R = Max_ then
H := (G - B) / Delta
else
If G = Max_ then
H := 2.0 + (B - R) / Delta
else
If B = Max_ then
H := 4.0 + (R - G) / Delta
End
else
H := -1.0 ;
H := H * 60 ;
If H < 0.0 then H := H + 360.0;
with Result Do
begin
Hue := H ; // Hue -> 0..360
Sat := S * 100 / 255; // Saturation -> 0..100 %
Val := V * 100 / 255; // Value - > 0..100 %
end;
end;
0 komentar:
Posting Komentar