Where can I find the documentation of the tikz 3d library? There seems to be no such section in the manual and google didn't help me in this case.
Asked
Active
Viewed 5,786 times
29
2 Answers
24
I've found several related answers:
- TikZ: How to draw an isometric drawing in tikz
- Specifying the transformation matrix TikZ uses manually?
So, I've went and look into the sources of TikZ 3D library, here it is (all of it):
% 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[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/frontendlayer/tikz/libraries/tikzlibrary3d.code.tex,v 1.1 2008/01/09 17:57:15 tantau Exp $
% New coordinate systems:
\tikzdeclarecoordinatesystem{xyz cylindrical}
{%
\pgfset{/tikz/cs/.cd,angle=0,radius=0,z=0,#1}%
\pgfpointcylindrical{\tikz@cs@angle}{\tikz@cs@radius}{\tikz@cs@z}%
}
\tikzdeclarecoordinatesystem{xyz spherical}
{%
\pgfset{/tikz/cs/.cd,angle=0,radius=0,latitude=0,longitude=0,#1}%
\pgfpointspherical{\tikz@cs@angle}{\tikz@cs@latitude}{\tikz@cs@radius}%
}
\pgfset{/tikz/cs/longitude/.store in=\tikz@cs@angle}
\pgfset{/tikz/cs/latitude/.store in=\tikz@cs@latitude}
% Options for transforming into a plane:
\tikzoption{plane origin}{\def\tikz@plane@origin{\tikz@scan@one@point\pgfutil@firstofone#1}}
\tikzoption{plane x}{\def\tikz@plane@x{\tikz@scan@one@point\pgfutil@firstofone#1}}
\tikzoption{plane y}{\def\tikz@plane@y{\tikz@scan@one@point\pgfutil@firstofone#1}}
\let\tikz@plane@origin=\pgfpointorigin
\def\tikz@plain@x{\pgfpointxy{1}{0}}
\def\tikz@plain@y{\pgfpointxy{0}{1}}
\tikzoption{canvas is plane}[]{
\tikz@canvas@is@plane
}
\tikzoption{canvas is xy plane at z}{%
\tikz@addtransform{\pgftransformshift{\pgfpointxyz{0}{0}{#1}}}%
}
\tikzoption{canvas is yx plane at z}[]{%
\def\tikz@plane@origin{\pgfpointxyz{0}{0}{#1}}%
\def\tikz@plane@x{\pgfpointxyz{0}{1}{#1}}%
\def\tikz@plane@y{\pgfpointxyz{1}{0}{#1}}%
\tikz@canvas@is@plane
}
\tikzoption{canvas is xz plane at y}[]{%
\def\tikz@plane@origin{\pgfpointxyz{0}{#1}{0}}%
\def\tikz@plane@x{\pgfpointxyz{1}{#1}{0}}%
\def\tikz@plane@y{\pgfpointxyz{0}{#1}{1}}%
\tikz@canvas@is@plane
}
\tikzoption{canvas is zx plane at y}[]{%
\def\tikz@plane@origin{\pgfpointxyz{0}{#1}{0}}%
\def\tikz@plane@x{\pgfpointxyz{0}{#1}{1}}%
\def\tikz@plane@y{\pgfpointxyz{1}{#1}{0}}%
\tikz@canvas@is@plane
}
\tikzoption{canvas is yz plane at x}[]{%
\def\tikz@plane@origin{\pgfpointxyz{#1}{0}{0}}%
\def\tikz@plane@x{\pgfpointxyz{#1}{1}{0}}%
\def\tikz@plane@y{\pgfpointxyz{#1}{0}{1}}%
\tikz@canvas@is@plane
}
\tikzoption{canvas is zy plane at x}[]{%
\def\tikz@plane@origin{\pgfpointxyz{#1}{0}{0}}%
\def\tikz@plane@x{\pgfpointxyz{#1}{0}{1}}%
\def\tikz@plane@y{\pgfpointxyz{#1}{1}{0}}%
\tikz@canvas@is@plane
}
% Transformation code
\def\tikz@canvas@is@plane{
\pgf@process{\tikz@plane@x}%
\pgf@xa=\pgf@x%
\pgf@ya=\pgf@y%
\pgf@process{\tikz@plane@y}%
\pgf@xb=\pgf@x%
\pgf@yb=\pgf@y%
\pgf@process{\tikz@plane@origin}%
\edef\pgf@marshal{\noexpand\tikz@addtransform{%
\noexpand\pgftransformtriangle
{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}
{\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}
\noexpand\pgftransformscale{0.035146}%
\noexpand\pgfsetxvec{\noexpand\pgfpoint{1cm}{0cm}}%
\noexpand\pgfsetyvec{\noexpand\pgfpoint{0cm}{1cm}}%
\noexpand\pgfsetzvec{\noexpand\pgfpoint{0cm}{0cm}}%
}}%
\pgf@marshal%
}
\endinput
Looks simple but, not yet documented. Summarizing, it introduces some new coordinates systems:
xyz cylindricalwithangle,radiusandheightas parameters.xyz sphericalwithangle,latitudeandradiusas an option introduceslongtitudeas anangledefine.
And some new TikZ options to set, which plane to draw:
plane origin
plane x
plane y
canvas is plane
canvas is xy plane at z
canvas is yx plane at z
canvas is xz plane at y
canvas is zx plane at y
canvas is yz plane at x
canvas is zy plane at x
That's all.
Guilherme Zanotelli
- 7,787
m0nhawk
- 9,664
1
For those still stumbling here, this question is very old and there is now documentation for the 3d library.
As of September 2023 it can be found in Part V, Chapter 40, page 564 of the TikZ/PGF manual.
dragomang87
- 136
- 1
- 4
\usetikzlibrary{3d}. If I search thepdfof the manual I only get things about 3d charts. Could you point me to the correct pages in the manual? – student Oct 09 '12 at 06:40