%PDF- %PDF-
| Direktori : /proc/self/root/usr/share/texlive/texmf-dist/tex/generic/pgf/rendering/ |
| Current File : //proc/self/root/usr/share/texlive/texmf-dist/tex/generic/pgf/rendering/pgfrenderpoints.code.tex |
% 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/pgfrenderpoints.code.tex,v 1.2 2007/03/09 17:49:33 tantau Exp $
% Create a 3D point
%
% #1 = macro name in which the point object should be stored
% #2 to #4 = x-, y- and z-coordinate of the point
%
% Note:
%
% The quick version does not call \setlength and is faster.
%
% Example:
%
% \pgfrenderpointcreate{\pgfpoint{2pt+3cm}{3cm}}
\def\pgfrenderpointcreate#1#2#3#4{%
\pgfmathsetlength\pgf@xa{#2}%
\pgfmathsetlength\pgf@xb{#3}%
\pgfmathsetlength\pgf@xc{#4}%
\pgfqrenderpointcreate{\the\pgf@xa}{\the\pgf@xb}{\the\pgf@xc}%
}
\def\pgfqrenderpointcreate#1#2#3#4{%
\edef#1{\pgf@xa=#2\relax\pgf@xb=#3\pgf@xc=#4\relax}%
}
\def\pgf@render@unpack#1{%
#1%
}
% The origin point object
%
% Description:
%
% This object is always the origin.
%
\pgfqrenderpointcreate\pgfrenderobjorigin{0pt}{0pt}{0pt}
% Add two 3D vectors
%
% #1 = name of new vector (may be one of the input)
% #2 = name of first vector
% #3 = name of second vector
%
% Description:
%
% The points #2 and #3 are added and the result is stored in #1. If #1
% equals either #2 or #3, to point is overwritten.
%
% Example:
%
% \pgfrenderpointcreate{\myvec}{1cm}{2cm}{3cm}
% \pgfrenderpointcreate{\offset}{1cm}{0cm}{0cm}
% \pgfrenderpointadd{\myvec}{\myvec}{\offset}
\def\pgfrenderpointadd#1#2#3{%
\pgf@render@unpack#2%
\pgf@ya=\pgf@xa%
\pgf@yb=\pgf@xb%
\pgf@yc=\pgf@xc%
\pgf@render@unpack#3%
\advance\pgf@xa by\pgf@ya%
\advance\pgf@xb by\pgf@yb%
\advance\pgf@xc by\pgf@yc%
\pgfqrenderpointcreate#1{\the\pgf@xa}{\the\pgf@xb}{\the\pgf@xc}%
}
% Scale a 3D vectors
%
% #1 = name of new vector (may be one of the input)
% #2 = scale
% #3 = name of vector to be scaled
%
% Description:
%
% Sets #1 := #2*#3.
%
% Example:
%
% \pgfrenderpointcreate{\myvec}{1cm}{2cm}{3cm}
% \pgfrenderpointscale{\myvec}{2}{\myvec}
\def\pgfrenderpointscale#1#2#3{%
\pgf@render@unpack#3%
\pgf@xa=#2\pgf@xa%
\pgf@xb=#2\pgf@xb%
\pgf@xc=#2\pgf@xc%
\pgfqrenderpointcreate#1{\the\pgf@xa}{\the\pgf@xb}{\the\pgf@xc}%
}
% Project a 3D point to 2D
%
% #1 = 3D point object
%
% Description:
%
% This command takes a 3D point object and sets \pgf@x to the x-value
% of the point and \pgf@y to the y-value.
%
% Example:
%
% \pgfpointprojection{\mypoint}
\def\pgfpointprojection#1{%
\pgf@render@unpack{#1}%
\pgf@x=\pgf@xa%
\pgf@y=\pgf@ya%
}
\endinput