% lua-tikz3dtools-latex2e-command-definitions.tex
\ProvidesFile{lua-tikz3dtools-latex2e-command-definitions}
\newcommand{\drawpoint}[2][]{
\begingroup
\coordinate (@) at (#2);
\node at (@) [
circle
,minimum size = 2*\tikz@td@gm@pointradius cm
,inner sep = 0pt
,outer sep = 0pt
,fill
,/lua-tikz3dtools/geometric-vector/.search also = {/tikz}
,/lua-tikz3dtools/geometric-vector/.cd
,#1
] {};
\endgroup
}
\newcommand{\drawmark}[1][]{
\begingroup
\pgfmathsetmacro{\tikz@td@gm@halfmarklength}{\tikz@td@gm@marklength/2}
\draw[
/lua-tikz3dtools/geometric-vector/.search also = {/tikz}
,/lua-tikz3dtools/geometric-vector/.cd
,#1
] (0,-\tikz@td@gm@halfmarklength pt) -- (0,\tikz@td@gm@halfmarklength pt);
\endgroup
}
\newcommand{\drawvector}[3][]{
\begingroup
\tikzset{
/lua-tikz3dtools/geometric-vector/.search also = {/tikz},
/lua-tikz3dtools/geometric-vector/.cd,
#1
}
\coordinate (@start) at (#2);
\ifnum\tikz@td@gm@points=1
\drawpoint[#1]{@start}
\draw
[
very thick
,{-Stealth[round]}
,shorten < = \tikz@td@gm@pointradius cm
,/lua-tikz3dtools/geometric-vector/.search also = {/tikz}
,/lua-tikz3dtools/geometric-vector/.cd
,#1
] (@start) -- ++(#3);
\fi
\ifnum\tikz@td@gm@points=2
\drawpoint[#1]{@start}
\draw
[
very thick
,{-Stealth[round]}
,shorten < = \tikz@td@gm@pointradius cm
,shorten > = \tikz@td@gm@pointradius cm
,/lua-tikz3dtools/geometric-vector/.search also = {/tikz}
,/lua-tikz3dtools/geometric-vector/.cd
,#1
] (@start) -- ++(#3) coordinate (@end);
\drawpoint[#1]{@end}
\fi
\ifnum\tikz@td@gm@points=0
\draw
[
very thick
,{-Stealth[round]}
,/lua-tikz3dtools/geometric-vector/.search also = {/tikz}
,/lua-tikz3dtools/geometric-vector/.cd
,#1
] (@start) -- ++(#3);
\fi
\ifnum\tikz@td@gm@points=3
\draw
[
very thick
,{-Stealth[round]}
,/lua-tikz3dtools/geometric-vector/.search also = {/tikz}
,/lua-tikz3dtools/geometric-vector/.cd
,#1
] (@start) -- ++(#3) coordinate (@end);
\drawpoint[#1]{@end}
\fi
\ifnum\tikz@td@gm@mark=1
\path
[
decoration = {
markings
,mark =
between positions \tikz@td@gm@markstart
and \tikz@td@gm@markstop
step \tikz@td@gm@markstep
with {\drawmark}
}
,decorate
] (#2) -- ++(#3);
\fi
\endgroup
}
% Labels a path:
% #2 - Start Coordinate,
% #3 - End Coordinate,
% #4 - Vector (direction),
% #5 - Relative Position along path,
% #6 - Offset coordinate,
% #7 - The label text.
\newcommand{\drawlabel}[7][]{
\begingroup
\path
[
decoration = {
markings
,mark =
at position #4
with
{
\node
[
#1
]
at (#5,#6) {#7};
}
}
,decorate
] (#2) -- ++(#3);
\endgroup
}
\newcommand{\appendprism}[1][]{
\begingroup
\tikzset{
/lua-tikz3dtools/clipped-subspace/plane/.search also = {/lua-tikz3dtools/clipped-subspace},
/lua-tikz3dtools/clipped-subspace/plane/.cd,
#1
}
% For brevity, assign keys to macros
\def\xmin{\tikz@td@cs@xmin}
\def\xmax{\tikz@td@cs@xmax}
\def\ymin{\tikz@td@cs@ymin}
\def\ymax{\tikz@td@cs@ymax}
\def\zmin{\tikz@td@cs@zmin}
\def\zmax{\tikz@td@cs@zmax}
% Bottom square edges
\appendcurve[
u min=0, u max=1, u samples=20,
x = (1-u)*\xmin + u*\xmax,
y = \ymin,
z = \zmin,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmax,
y = (1-u)*\ymin + u*\ymax,
z = \zmin,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = (1-u)*\xmax + u*\xmin,
y = \ymax,
z = \zmin,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmin,
y = (1-u)*\ymax + u*\ymin,
z = \zmin,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
% Top square edges
\appendcurve[
u min=0, u max=1, u samples=20,
x = (1-u)*\xmin + u*\xmax,
y = \ymin,
z = \zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmax,
y = (1-u)*\ymin + u*\ymax,
z = \zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = (1-u)*\xmax + u*\xmin,
y = \ymax,
z = \zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmin,
y = (1-u)*\ymax + u*\ymin,
z = \zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
% Vertical edges (pillars)
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmin,
y = \ymin,
z = (1-u)*\zmin + u*\zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmax,
y = \ymin,
z = (1-u)*\zmin + u*\zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmax,
y = \ymax,
z = (1-u)*\zmin + u*\zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\appendcurve[
u min=0, u max=1, u samples=20,
x = \xmin,
y = \ymax,
z = (1-u)*\zmin + u*\zmax,
draw options = {draw},
transformation = \tikz@td@cs@transformation
]
\endgroup
}