Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
31
Task/Plasma-effect/Raku/plasma-effect.raku
Normal file
31
Task/Plasma-effect/Raku/plasma-effect.raku
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use Image::PNG::Portable;
|
||||
|
||||
my ($w, $h) = 400, 400;
|
||||
my $out = Image::PNG::Portable.new: :width($w), :height($h);
|
||||
|
||||
plasma($out);
|
||||
|
||||
$out.write: 'Plasma-perl6.png';
|
||||
|
||||
sub plasma ($png) {
|
||||
(^$w).race.map: -> $x {
|
||||
for ^$h -> $y {
|
||||
my $hue = 4 + sin($x / 19) + sin($y / 9) + sin(($x + $y) / 25) + sin(sqrt($x² + $y²) / 8);
|
||||
$png.set: $x, $y, |hsv2rgb($hue/8, 1, 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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue