NAME
Math::Vec2 - Perl class to represent 2d vectors
TREE
-+- Math::Vec2
SEE ALSO
Math::Color, Math::ColorRGBA, Math::Image, Math::Vec2, Math::Vec3, Math::Rotation
SYNOPSIS
use Math::Vec2;
my $v = new Math::Vec2; # Make a new Vec2
my $v1 = new Math::Vec2(0,1);
DESCRIPTION
Default value
0 0
OPERATORS
Summary
'~' => Returns the reverse of this vector.
'>>' => Performs a clockwise rotation of the components.
'>>=' => Performs a clockwise rotation of the components.
'<<' => Performs a counter-clockwise rotation of the components.
'<<=' => Performs a counter-clockwise rotation of the components.
'!' => 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.
~
Returns the reverse of this vector. Very similar to "reverse" in perlbuiltin.
my $v = new Math::Vec2(1,2);
printf "2 1 = %s\n", ~$v; # swap components
printf "1 2 = %s\n", ~~$v;
>>
Performs a clockwise rotation of the components. Very similar to bitwise right-shift.
my $v = new Math::Vec2(1,2);
printf "2 1 = %s\n", $v >> 1;
printf "1 2 = %s\n", $v >> 2;
<<
Performs a counter-clockwise rotation of the components. Very similar to bitwise left-shift.
my $v = new Math::Vec2(1,2);
printf "2 1 = %s\n", $v << 1;
printf "1 2 = %s\n", $v << 2;
abs()
Performs a componentwise abs. This is used to overload the 'abs' operator.
$v = new Math::Vec2(-4, 5);
$v = $vec2->abs;
$v = abs($vec2);
printf $v; # 4 5
**
$v = $v1 * $v1 * $v1;
$v = $v1 ** 3;
METHODS
getDefaultValue
Get the default value as array ref
$default = $v1->getDefaultValue;
@default = @{ Math::Vec2->getDefaultValue };
$n = @{ Math::Vec2->getDefaultValue };
new
my $v = new Math::Vec2;
my $v2 = new Math::Vec2(1,2);
my @v3 = @$v;
If you call new() with a reference to an array, it will be used as reference.
my $v3 = new Math::Vec2([1,2]);
copy
Makes a copy
$v2 = $v1->copy;
setValue(x,y,z)
Sets the value of the vector
$v1->setValue(1,2);
setX(x)
Sets the first value of the vector
$v1->setX(1);
$v1->x = 1;
$v1->[0] = 1;
setY(y)
Sets the second value of the vector
$v1->setY(2);
$v1->y = 2;
$v1->[1] = 2;
getValue
Returns the value of the vector (x, y) as a 2 components array.
@v = $v1->getValue;
x
getX
Returns the first value of the vector.
$x = $v1->getX;
$x = $v1->x;
$x = $v1->[0];
y
getY
Returns the second value of the vector.
$y = $v1->getY;
$y = $v1->y;
$y = $v1->[1];
negate
$v = $v1->negate;
$v = -$v1;
add(vec2)
$v = $v1->add($v2);
$v = $v1 + $v2;
$v = [8, 2] + $v1;
$v1 += $v2;
subtract(vec2)
$v = $v1->subtract($v2);
$v = $v1 - $v2;
$v = [8, 2] - $v1;
$v1 -= $v2;
multiply(vec2 or scalar)
This is used to overload the '*' operator.
$v = $v1 * 2;
$v = $v1 * [3, 5];
$v = [8, 2] * $v1;
$v = $v1 * $v1;
$v1 *= 2;
$v = $v1->multiply(2);
divide(vec2 or scalar)
This is used to overload the '/' operator.
$v = $v1 / 2;
$v1 /= 2;
$v = $v1 / [3, 7];
$v = [8, 2] / $v1;
$v = $v1 / $v1; # unit vector
$v = $v1->divide(2);
dot(vec2)
$s = $v1->dot($v2);
$s = $v1 . $v2;
$s = $v1 . [ 2, 3 ];
length
Returns the length of the vector
$l = $v1->length;
normalize
$v = $v1->normalize;
sig
Performs a componentwise sig.
$v = new Math::Vec2(-4, 5);
$v = $vec2->sig;
printf $v; # -1 1
sum
Returns the sum of the components.
$v = new Math::Vec2(-8, 2);
$s = $vec2->sum;
printf $s; # -6
toString
Returns a string representation of the vector. This is used to overload the '""' operator, so that vector may be freely interpolated in strings.
my $q = new Math::Vec2(1,2);
print $q->toString; # "1 2"
print "$q"; # "1 2"
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.