Draw a sphere: Difference between revisions
m
→{{header|Perl}}: minor changes
(Perl entry) |
m (→{{header|Perl}}: minor changes) |
||
Line 1,397:
print "P2\n$x $y\n$depth\n";
my ($
my ($r2) = $
{
for my $x (-$
my $x2 = $x**2;
for my $y (-$
my $y2 = $y**2;
my $pixel =
if ($x2 + $y2 < $r2) {
my $v = Vector->new($x, $y, sqrt($r2 - $x2 - $y2))->normalized;
my $I =
$I = $I < 0 ? 0 : $I > 1 ? 1 : $I;
$pixel = int($I * $depth);
}
print $pixel;
print $y == $
}
}
Line 1,421:
my $class = shift;
bless ref($_[0]) eq 'Array' ? $_[0] : [ @_ ], $class;
}▼
sub normalized {▼
my $this = shift;▼
my $norm = sqrt($this . $this);▼
}
use overload q{.} => sub {
my ($a, $b) = @_;
die "wrong type" unless ref($b) eq __PACKAGE__;
my $sum = 0;
for (0 .. @$a - 1) {
Line 1,431 ⟶ 1,437:
},
q{""} => sub { sprintf "Vector:[%s]", join ' ', @{shift()} };
▲ sub normalized {
▲ my $this = shift;
▲ my $norm = sqrt($this . $this);
▲ bless [ map $_/$norm, @$this ], ref $this;
▲ }
}</lang>
|