The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Vector::Object3D::Matrix::Transform - construction of graphical transformation matrices

SYNOPSIS

  package Vector::Object3D::Matrix;

  use Readonly;
  Readonly my $pi => 3.14159;

  use Moose;
  with 'Vector::Object3D::Matrix::Transform';

  # Calling any method from this role results in creating an instance of the given class:
  my $class = 'Vector::Object3D::Matrix';

  # Construct rotation matrix on a 2D plane:
  my $rotateMatrix2D = $class->get_rotation_matrix(
    rotate_xy => (30 * $pi / 180),
  );

  # Construct scaling matrix on a 2D plane:
  my $scaleMatrix2D = $class->get_scaling_matrix(
    scale_x => 2,
    scale_y => 2,
  );

  # Construct translation matrix on a 2D plane:
  my $translateMatrix2D = $class->get_translation_matrix(
    shift_x => -2,
    shift_y => 1,
  );

  # Construct rotation matrix in a 3D space:
  my $rotateMatrix3D = $class->get_rotation_matrix(
    rotate_xy => (30 * $pi / 180),
    rotate_yz => -30 * ($pi / 180),
    rotate_xz => 45 * ($pi / 180),
  );

  # Construct scaling matrix in a 3D space:
  my $scaleMatrix3D = $class->get_scaling_matrix(
    scale_x => 2,
    scale_y => 2,
    scale_z => 3,
  );

  # Construct translation matrix in a 3D space:
  my $translateMatrix3D = $class->get_translation_matrix(
    shift_x => -2,
    shift_y => 1,
    shift_z => 3,
  );

DESCRIPTION

Vector::Object3D::Matrix::Transform is a Moose role that is meant to be applied to Vector::Object3D::Matrix class in order to provide it with additional methods supporting construction of graphical transformation matrices, which currently handle rotation, scaling and translation functionalities.

METHODS

get_rotation_matrix

Construct rotation matrix on a 2D plane:

  my $rotateMatrix2D = $class->get_rotation_matrix(
    rotate_xy => (30 * $pi / 180),
  );

Construct rotation matrix in a 3D space:

  my $rotateMatrix3D = $class->get_rotation_matrix(
    rotate_xy => (30 * $pi / 180),
    rotate_yz => -30 * ($pi / 180),
    rotate_xz => 45 * ($pi / 180),
  );

get_scaling_matrix

Construct scaling matrix on a 2D plane:

  my $scaleMatrix2D = $class->get_scaling_matrix(
    scale_x => 2,
    scale_y => 2,
  );

Construct scaling matrix in a 3D space:

  my $scaleMatrix3D = $class->get_scaling_matrix(
    scale_x => 2,
    scale_y => 2,
    scale_z => 3,
  );

get_translation_matrix

Construct translation matrix on a 2D plane:

  my $translateMatrix2D = $class->get_translation_matrix(
    shift_x => -2,
    shift_y => 1,
  );

Construct translation matrix in a 3D space:

  my $translateMatrix3D = $class->get_translation_matrix(
    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::Matrix::Transform exports nothing neither by default nor explicitly.

SEE ALSO

Math::VectorReal, Vector::Object3D::Matrix.

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!