diff options
author | Karl Berry <karl@freefriends.org> | 2010-10-29 00:31:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-10-29 00:31:31 +0000 |
commit | 6bc1f5497cfb2f56d65c80a4c36ea3bad6dc046c (patch) | |
tree | f7751da75030fb1e06653eeb44e579fcee09c65f /Master/texmf-dist/tex/generic/pgf/rendering/pgfrendertransform.code.tex | |
parent | ed0c7c756e441b2d2ba3633da233fc24361ac0d3 (diff) |
pgf 2.10 (28oct10)
git-svn-id: svn://tug.org/texlive/trunk@20236 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/rendering/pgfrendertransform.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/rendering/pgfrendertransform.code.tex | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/rendering/pgfrendertransform.code.tex b/Master/texmf-dist/tex/generic/pgf/rendering/pgfrendertransform.code.tex new file mode 100644 index 00000000000..fb6802e9f1c --- /dev/null +++ b/Master/texmf-dist/tex/generic/pgf/rendering/pgfrendertransform.code.tex @@ -0,0 +1,117 @@ +% Copyright 2006 by Till Tantau +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% +% See the file doc/generic/pgf/licenses/LICENSE for more details. + +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/rendering/pgfrendertransform.code.tex,v 1.1 2006/11/12 14:18:46 tantau Exp $ + + + + +% Create a 3D transformation matrix +% +% #1 = macro name in which the transformation matrix should be stored +% #2 = three comma-separated numbers, representing the first line of +% the matrix. +% #3 = three numbers, representing the second line of the matrix. +% #4 = three numbers, representing the thrid line of the matrix. +% #5 = 3D point object, used for the offset. +% +% Example: +% +% \pgfrendertransformcreate{\mymatrix}{1,0,0}{0,1,0}{0,0,1}{\pgfrenderobjorigin} + +\def\pgfrendertransformcreate#1#2#3#4#5{% + \pgf@render@unpack#5% + \edef#1{{#2}{#3}{#4}{\pgf@xa=\the\pgf@xa\pgf@xb=\the\pgf@xb\pgf@xc=\the\pgf@xc}}% +} + + + +% Apply a 3D transformation matrix to a 3D point +% +% #1 = new point (may be the old point) (#1 := #2*#3) +% #2 = transformation matrix object +% #3 = point to be transformed +% +% Example: +% +% \pgfrendertransform{\newvec}{\mymatrix}{\oldvec} + +\def\pgfrendertransform#1#2#3{% + \pgf@render@unpack#3% + \expandafter\pgf@rendertransform#2% + \pgf@xa=\pgf@ya% + \pgf@xb=\pgf@yb% + \pgf@xc=\pgf@yc% +} + +\def\pgf@rendertransform#1#2#3#4{% + \pgf@@rendertransform\pgf@ya#1\relax% + \pgf@@rendertransform\pgf@yb#2\relax% + \pgf@@rendertransform\pgf@yc#3\relax% + #4% + \advance\pgf@ya by \pgf@xa% + \advance\pgf@yb by \pgf@xb% + \advance\pgf@yc by \pgf@xc% +} + +\def\pgf@@rendertransform#1#2,#3,#4\relax{% + #1=#2\pgf@xa% + \advance#1by#3\pgf@xb% + \advance#1by#4\pgf@xc% +} + + + +% Concatenate two 3D transformation matrices +% +% #1 = new matrix, (#1 := #2*#3) +% #2 = first matrix +% #3 = second matrix +% +% Example: +% +% \pgfrendertransformconcat{\mymatrix}{\rotationmatrix}{\mymatrix} + +\def\pgfrendertransformconcat#1#2#3{% + \expandafter\pgf@render@extract@columns#3% + \pgfrendertransform\pgf@render@temp@a#2\pgf@render@temp@a% + \pgfrendertransform\pgf@render@temp@b#2\pgf@render@temp@b% + \pgfrendertransform\pgf@render@temp@c#2\pgf@render@temp@c% + \pgfrendertransform\pgf@render@temp@d#2\pgf@render@temp@d% + \pgf@render@unpack\pgf@render@temp@a% + \edef\pgf@temp@a{\pgf@sys@tonumber\pgf@xa}% + \edef\pgf@temp@b{\pgf@sys@tonumber\pgf@xb}% + \edef\pgf@temp@c{\pgf@sys@tonumber\pgf@xc}% + \pgf@render@unpack\pgf@render@temp@b% + \edef\pgf@temp@a{\pgf@temp@a,\pgf@sys@tonumber\pgf@xa}% + \edef\pgf@temp@b{\pgf@temp@b,\pgf@sys@tonumber\pgf@xb}% + \edef\pgf@temp@c{\pgf@temp@c,\pgf@sys@tonumber\pgf@xc}% + \pgf@render@unpack\pgf@render@temp@c% + \edef\pgf@temp@a{\pgf@temp@a,\pgf@sys@tonumber\pgf@xa}% + \edef\pgf@temp@b{\pgf@temp@b,\pgf@sys@tonumber\pgf@xb}% + \edef\pgf@temp@c{\pgf@temp@c,\pgf@sys@tonumber\pgf@xc}% + \pgfrendertransformcreate#1{\pgf@temp@a}{\pgf@temp@b}{\pgf@temp@c}{\pgf@render@temp@c}% +} + +\def\pgf@render@extract@columns#1#2#3#4{% + \pgf@@render@extract@columns#1,#2,#3\relax% + \def\pgf@render@temp@d{#4}% +} + +\def\pgf@@render@extract@columns#1,#2,#3,#4,#5,#6,#7,#8,#9\relax{% + \pgfqrenderpointcreate\pgf@render@temp@a{#1pt}{#4pt}{#7pt}% + \pgfqrenderpointcreate\pgf@render@temp@b{#2pt}{#5pt}{#8pt}% + \pgfqrenderpointcreate\pgf@render@temp@c{#3pt}{#6pt}{#9pt}% +} + + + + + +\endinput |