]>
iEval git - convert-color-husl.git/blob - lib/Convert/Color/LUV.pm
1 package Convert
::Color
::LUV
;
6 use parent qw
/Convert::Color/;
8 use Convert
::Color
::XYZ
;
10 our $VERSION = '0.001';
12 use constant
+{ ## no critic (Capitalization)
16 REF_U
=> 0.19783000664283,
17 REF_V
=> 0.46831999493879,
20 __PACKAGE__
->register_color_space('luv');
23 my ($class, $l, $u, $v) = @_;
24 ($l, $u, $v) = split /,/s, $l unless defined $u;
25 bless [$l, $u, $v], $class
36 $y <= EPS ?
$y * KAPPA
: 116 * ($y ** (1/3)) - 16
41 $l <= 8 ?
$l / KAPPA : (($l + 16) / 116) ** 3
46 my ($l, $u, $v) = @
$self;
47 return Convert
::Color
::XYZ
->new(0, 0, 0) unless $l;
48 my $var_u = $u / (13 * $l) + REF_U
;
49 my $var_v = $v / (13 * $l) + REF_V
;
51 my $x = 9 * $y * $var_u / (4 * $var_v);
52 my $z = (9 * $y - (14 * $var_v * $y) - ($var_v * $x)) / (3 * $var_v);
53 Convert
::Color
::XYZ
->new($x, $y, $z)
57 my ($class, $xyz) = @_;
58 my ($x, $y, $z) = @
$xyz;
60 return $class->new(0, 0, 0) unless $l;
61 my $var_u = (4 * $x) / ($x + 15 * $y + 3 * $z);
62 my $var_v = (9 * $y) / ($x + 15 * $y + 3 * $z);
63 my $u = 13 * $l * ($var_u - REF_U
);
64 my $v = 13 * $l * ($var_v - REF_V
);
65 $class->new($l, $u, $v)
68 sub rgb
{ shift->convert_to_xyz->rgb }
69 sub new_rgb
{ shift->new_from_xyz(Convert
::Color
::XYZ
->new_rgb(@_)) }
78 Convert::Color::LUV - a color value in the CIE 1976 (L*, u*, v*) color space
82 use Convert::Color::LUV;
83 my $red = Convert::Color::LUV->new(53.23711, 175.00982, 37.76509);
84 my $green = Convert::Color::LUV->new('87.73552,-83.06712,107.41811');
87 my $blue = Convert::Color->new('luv:32.30087,-9.40241,-130.35109');
89 say $red->L; # 53.23711
90 say $red->u; # 175.00982
91 say $red->v; # 37.76509
92 say join ',', $blue->luv; # 32.30087,-9.40241,-130.35109
96 Objects of this class represent colors in the CIE 1976 (L*, u*, v*) color space.
102 =item Convert::Color::LUV->B<new>(I<$l>, I<$u>, I<$v>)
104 Construct a color from its components.
106 =item Convert::Color::LUV->B<new>(I<"$l,$u,$v">)
108 Construct a color from a string. The string should contain the three
109 components, separated by commas.
117 Accessors for the three components of the color.
121 Returns the three components as a list.
131 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
133 =head1 COPYRIGHT AND LICENSE
135 Copyright (C) 2015 by Marius Gavrilescu
137 This library is free software; you can redistribute it and/or modify
138 it under the same terms as Perl itself, either Perl version 5.20.2 or,
139 at your option, any later version of Perl 5 you may have available.
This page took 0.059358 seconds and 4 git commands to generate.