Jump to content

Color wheel: Difference between revisions

Rename Perl 6 -> Raku, alphabetize, minor clean-up
(Added Fōrmulæ)
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
Line 6:
This is strictly for learning purposes only. It's highly recommended that you use an image in an actual application to actually draw the color wheel   (as procedurally drawing is super slow). This does help you understand how color wheels work and this can easily be used to determine a color value based on a position within a circle.
<br><br>
 
=={{header|AppleScript}}==
 
Line 120 ⟶ 121:
Image is same as Kotlin entry
</pre>
 
 
=={{header|Julia}}==
Line 210:
Looks like mirror image of Smart BASIC entry
</pre>
 
=={{header|M2000 Interpreter}}==
<lang M2000 Interpreter>
Line 319 ⟶ 320:
 
$img->write(file => 'color_wheel.png');</lang>
 
=={{header|Perl 6}}==
{{works with|Rakudo|2016.08}}
 
<lang perl6>use Image::PNG::Portable;
 
my ($w, $h) = 300, 300;
 
my $out = Image::PNG::Portable.new: :width($w), :height($h);
 
my $center = $w/2 + $h/2*i;
 
color-wheel($out);
 
$out.write: 'Color-wheel-perl6.png';
 
sub color-wheel ( $png ) {
^$w .race.map: -> $x {
for ^$h -> $y {
my $vector = $center - $x - $y*i;
my $magnitude = $vector.abs * 2 / $w;
my $direction = ( π + atan2( |$vector.reals ) ) / τ;
$png.set: $x, $y, |hsv2rgb( $direction, $magnitude, $magnitude < 1 );
}
}
 
sub hsv2rgb ( $h, $s, $v ){
my $c = $v * $s;
my $x = $c * (1 - abs( (($h*6) % 2) - 1 ) );
my $m = $v - $c;
(do given $h {
when 0..^1/6 { $c, $x, 0 }
when 1/6..^1/3 { $x, $c, 0 }
when 1/3..^1/2 { 0, $c, $x }
when 1/2..^2/3 { 0, $x, $c }
when 2/3..^5/6 { $x, 0, $c }
when 5/6..1 { $c, 0, $x }
} ).map: ((*+$m) * 255).Int
}</lang>
 
Until local image uploading is re-enabled, see [https://github.com/thundergnat/rc/blob/master/img/Color-wheel-perl6.png Color-wheel-perl6.png]
 
=={{header|Phix}}==
Line 496 ⟶ 455:
 
target</lang>
 
=={{header|Perl 6Raku}}==
(formerly Perl 6)
{{works with|Rakudo|2016.08}}
 
<lang perl6>use Image::PNG::Portable;
 
my ($w, $h) = 300, 300;
 
my $out = Image::PNG::Portable.new: :width($w), :height($h);
 
my $center = $w/2 + $h/2*i;
 
color-wheel($out);
 
$out.write: 'Color-wheel-perl6.png';
 
sub color-wheel ( $png ) {
^$w .race.map: -> $x {
for ^$h -> $y {
my $vector = $center - $x - $y*i;
my $magnitude = $vector.abs * 2 / $w;
my $direction = ( π + atan2( |$vector.reals ) ) / τ;
$png.set: $x, $y, |hsv2rgb( $direction, $magnitude, $magnitude < 1 );
}
}
 
sub hsv2rgb ( $h, $s, $v ){
my $c = $v * $s;
my $x = $c * (1 - abs( (($h*6) % 2) - 1 ) );
my $m = $v - $c;
(do given $h {
when 0..^1/6 { $c, $x, 0 }
when 1/6..^1/3 { $x, $c, 0 }
when 1/3..^1/2 { 0, $c, $x }
when 1/2..^2/3 { 0, $x, $c }
when 2/3..^5/6 { $x, 0, $c }
when 5/6..1 { $c, 0, $x }
} ).map: ((*+$m) * 255).Int
}</lang>
 
Until local image uploading is re-enabled, see [https://github.com/thundergnat/rc/blob/master/img/Color-wheel-perl6.png Color-wheel-perl6.png]
 
=={{header|Run BASIC}}==
10,333

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.