NAME

Math::Vec2 - Perl class to represent 2d vectors

TREE

-+- Math::Vec2

SEE ALSO

Math

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

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.