Next | Tricks of the Wizards | 146 |
sub dotproduct { my ($vec1, $vec2, $rev) = @_;
if (ref $vec2 && $vec2->isa('Vector3')) { my $dp = 0; for (qw(X Y Z)) { $dp += $vec1->{$_} * $vec2->{$_}; } return $dp; } elsif (! defined ref $vec2) { # It's a scalar return $vec1->new(map {$vec2 * $vec1->{$_}} qw(X Y Z)); } else { croak "Invalid vector scalar multiplication"; } }
sub crossproduct { ... }
Next | Copyright © 2003 M. J. Dominus |