

 
Manual Reference Pages  CAD::DRAWING::MANIPULATE::TRANSFORM (3)
.ds Aq ’
NAME
CAD::Drawing::Manipulate::Transform  Matrix methods for CAD::Drawing
CONTENTS
DESCRIPTION
Provides 3D transformation methods (based on traditional matrix
algorithms) for Drawing.pm objects.
Coordinate System
All of these methods assume a RIGHTHANDED coordinate system. If you
are using a lefthanded coordinate system, you are going to have
trouble, trouble, trouble. We aren’t making video games here!
AUTHOR
Eric L. Wilhelm <ewilhelm at cpan dot org>
http://scratchcomputing.com
COPYRIGHT
This module is copyright (C) 20042006 by Eric L. Wilhelm. Portions
copyright (C) 2003 by Eric L. Wilhelm and A. Zahner Co.
LICENSE
This module is distributed under the same terms as Perl. See the Perl
source package for details.
You may use this software under one of the following licenses:
(1) GNU General Public License
(found at http://www.gnu.org/copyleft/gpl.html)
(2) Artistic License
(found at http://www.perl.com/pub/language/misc/Artistic.html)
NO WARRANTY
This software is distributed with ABSOLUTELY NO WARRANTY. The author,
his former employer, and any other contributors will in no way be held
liable for any loss or damages resulting from its use.
Modifications
The source code of this module is made freely available and
distributable under the GPL or Artistic License. Modifications to and
use of this software must adhere to one of these licenses. Changes to
the code should be noted as such and this notification (as well as the
above copyright information) must remain intact on all copies of the
code.
Additionally, while the author is actively developing this code,
notification of any intended changes or extensions would be most helpful
in avoiding repeated work for all parties involved. Please contact the
author with any such development plans.
SEE ALSO
CAD::Drawing
CAD::Drawing::Calculate
CAD::Calc
Math::Vec
Math::Matrix
Methods
Transform
$drw>Transform($addr, \%opts);
Options:
normal_ready => [@normal_vec] # noquestionsasked normal vector input
NonOO Functions
build_matrix
Builds a linear transformation matrix according to %opts;
$mat = build_matrix(%opts);

Options:

LTM => $ltm # passthrough for prebuilt matrices
R => [$rX, $rY, $rZ] # rotation about each axis
T => [$tX, $tY, $tZ] # translation along each axis
S => [$sX, $sY, $sZ] # scaling along each axis

Units:

Scaling is in decimal (e.g. $sX = 0.9 will scale by 90%)


NewMat
Calls Math::MatrixReal>new_from_rows([@_]) see Math::MatrixReal for
methods which can be applied to the returned object.
$mat = NewMat(@rows);
transform_pt
Applies matrix multiplication to linearly transform @pt by $mat. This
eliminates the tedium of making new matrices just to multiply one point.
@pt = transform_pt(\@pt, $mat);
rotation_matrices
Returns a list of matrices corresponding to ($rX, $rY, $rZ)
Rotation is in ccw radians about each axis (righthand rule) except
that they may be specified in degrees with $angle . d
@rotations = rotation_matrices($rX, $rY, $rZ);
Resulting matrix will perform rotations in Z,Y,X order.
translation_matrix
Builds a linear transformation tranlation matrix from @trans, where
@trans = ($trX, $trY, $trZ).
$mat = translation_matrix(@trans);
scaling_matrix
Builds a linear tranformation matrix from @scales, where @scales =
($sX, $sY, $sZ).
$mat = scaling_matrix(@scales);
perl v5.20.3  CAD::DRAWING::MANIPULATE::TRANSFORM (3)  20160405 
Visit the GSP FreeBSD Man Page Interface. Output converted with manServer 1.07. 