NAME
Math::Vec3 - Perl class to represent 3d vectors
TREE
-+- Math::Vector -+- Math::Vec3
SEE ALSO
Math::Color, Math::ColorRGBA, Math::Image, Math::Vec2, Math::Vec3, Math::Rotation
SYNOPSIS
use Math::Vec3;
my $v = new Math::Vec3; # Make a new Vec3
my $v1 = new Math::Vec3(1,2,3);
DESCRIPTION
Default value
0 0 0
OPERATORS
Summary
'!' => Returns true if the length of this vector is 0
'<' => Numerical gt. Compares the length of this vector with a vector or a scalar value.
'<=' => Numerical le. Compares the length of this vector with a vector or a scalar value.
'>' => Numerical lt. Compares the length of this vector with a vector or a scalar value.
'>=' => Numerical ge. Compares the length of this vector with a vector or a scalar value.
'<=>' => Numerical cmp. Compares the length of this vector with a vector or a scalar value.
'==' => Numerical eq. Performs a componentwise equation.
'!=' => Numerical ne. Performs a componentwise equation.
'lt' => Stringwise lt
'le' => Stringwise le
'gt' => Stringwise gt
'ge' => Stringwise ge
'cmp' => Stringwise cmp
'eq' => Stringwise eq
'ne' => Stringwise ne
'bool' => Returns true if the length of this vector is not 0
'0+' => Numeric conversion operator. Returns the length of this vector.
'abs' => Performs a componentwise abs.
'neg' => Performs a componentwise negation.
'++' => Increment components
'--' => Decrement components
'+=' => Add a vector
'-=' => Subtract a vector
'*=' => Multiply with a vector or a scalar value.
'/=' => Divide with a vector or a scalar value.
'**=' => Power
'%=' => Modulo fmod
'+' => Add two vectors
'-' => Subtract vectors
'*' => Multiply this vector with a vector or a scalar value.
'/' => Divide this vector with a vector or a scalar value.
'**' => Returns a power of this vector.
'%' => Modulo fmod
'.' => Returns the dot product of two vectors.
'""' => Returns a string representation of the vector.
METHODS
getDefaultValue
Get the default value as array ref
$default = $v1->getDefaultValue;
@default = @{ Math::Vec3->getDefaultValue };
$n = @{ Math::Vec3->getDefaultValue };
setX(x)
Sets the first value of the vector
$v1->setX(1);
$v1->[0] = 1;
setY(y)
Sets the second value of the vector
$v1->setY(2);
$v1->[1] = 2;
setZ(z)
Sets the third value of the vector
$v1->setZ(2);
$v1->[2] = 2;
getX
Returns the first value of the vector.
$x = $v1->getX;
$x = $v1->[0];
getY
Returns the second value of the vector.
$y = $v1->getY;
$y = $v1->[1];
getZ
Returns the third value of the vector.
$y = $v1->getZ;
$y = $v1->[2];
negate
$v = $v1->negate;
$v = -$v1;
add(Vec3)
$v = $v1->add($v2);
$v = $v1 + $v2;
$v = [8, 2, 4] + $v1;
$v1 += $v2;
subtract(Vec3)
$v = $v1->subtract($v2);
$v = $v1 - $v2;
$v = [8, 2, 4] - $v1;
$v1 -= $v2;
multiply(Vec3 or scalar)
This is used to overload the '*' operator.
$v = $v1 * 2;
$v = $v1 * [3, 5, 4];
$v = [8, 2, 4] * $v1;
$v = $v1 * $v1;
$v1 *= 2;
$v = $v1->multiply(2);
divide(Vec3 or scalar)
This is used to overload the '/' operator.
$v = $v1 / 2;
$v1 /= 2;
$v = $v1 / [3, 7, 4];
$v = [8, 2, 4] / $v1;
$v = $v1 / $v1; # unit vector
$v = $v1->divide(2);
dot(Vec3)
$s = $v1->dot($v2);
$s = $v1 . $v2;
$s = $v1 . [ 2, 3, 4 ];
cross(vec3)
$v = $v1->cross($v2);
$v = $v1 x $v2;
$v = $v1 x [ 2, 3, 4 ];
length
Returns the length of the vector
$l = $v1->length;
normalize
$v = $v1->normalize;
SEE ALSO
Math::Color, Math::ColorRGBA, Math::Image, Math::Vec2, Math::Vec3, Math::Rotation
BUGS & SUGGESTIONS
If you run into a miscalculation, need some sort of feature or an additional holiday, or if you know of any new changes to the funky math, please drop the author a note.
ARRANGED BY
Holger Seelig holger.seelig@yahoo.de
COPYRIGHT
This is free software; you can redistribute it and/or modify it under the same terms as Perl itself.