NAME
Vector::Object3D::Point::Transform - Three-dimensional point object transformations
SYNOPSIS
package Vector::Object3D::Point;
use Readonly;
Readonly my $pi => 3.14159;
use Moose;
with 'Vector::Object3D::Point::Transform';
# Calling any method from this role requires providing an object of a base class
# and results in creation of a new instance of the same class:
my $point = Vector::Object3D::Point->new(coord => [3, -2, 1]);
# Rotate point on a 2D plane:
my $rotatePoint2D = $point->rotate(
rotate_xy => 30 * ($pi / 180),
);
# Scale point on a 2D plane:
my $scalePoint2D = $point->scale(
scale_x => 2,
scale_y => 2,
);
# Translate point on a 2D plane:
my $translatePoint2D = $point->translate(
shift_x => -2,
shift_y => 1,
);
# Rotate point in a 3D space:
my $rotatePoint3D = $point->rotate(
rotate_xy => 30 * ($pi / 180),
rotate_yz => -30 * ($pi / 180),
rotate_xz => 45 * ($pi / 180),
);
# Scale point in a 3D space:
my $scalePoint3D = $point->scale(
scale_x => 2,
scale_y => 2,
scale_z => 3,
);
# Translate point in a 3D space:
my $translatePoint3D = $point->translate(
shift_x => -2,
shift_y => 1,
shift_z => 3,
);
DESCRIPTION
Vector::Object3D::Point::Transform
is a Moose role that is meant to be applied to Vector::Object3D::Point
class in order to provide it with additional methods supporting fundamental transformations in the 3D space, such as rotation, scaling and translation.
METHODS
rotate
Rotate point on a 2D plane:
my $rotatePoint2D = $point->rotate(
rotate_xy => 30 * ($pi / 180),
);
Rotate point in a 3D space:
my $rotatePoint3D = $point->rotate(
rotate_xy => 30 * ($pi / 180),
rotate_yz => -30 * ($pi / 180),
rotate_xz => 45 * ($pi / 180),
);
scale
Scale point on a 2D plane:
my $scalePoint2D = $point->scale(
scale_x => 2,
scale_y => 2,
);
Scale point in a 3D space:
my $scalePoint3D = $point->scale(
scale_x => 2,
scale_y => 2,
scale_z => 3,
);
translate
Translate point on a 2D plane:
my $translatePoint2D = $point->translate(
shift_x => -2,
shift_y => 1,
);
Translate point in a 3D space:
my $translatePoint3D = $point->translate(
shift_x => -2,
shift_y => 1,
shift_z => 3,
);
BUGS
There are no known bugs at the moment. Please report any bugs or feature requests.
EXPORT
Vector::Object3D::Point::Transform
exports nothing neither by default nor explicitly.
SEE ALSO
AUTHOR
Pawel Krol, <pawelkrol@cpan.org>.
VERSION
Version 0.01 (2012-12-24)
COPYRIGHT AND LICENSE
Copyright (C) 2012 by Pawel Krol.
This library is free open source software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.
PLEASE NOTE THAT IT COMES WITHOUT A WARRANTY OF ANY KIND!