% lua-tikz3dtools-tikz-keys.tex
\ProvidesFile{lua-tikz3dtools-tikz-keys}
\tikzset{
   /lua-tikz3dtools/.is family % abbreviated "td"
   ,/lua-tikz3dtools/.cd
       ,/lua-tikz3dtools/clipped-subspace/.cd % abbreviated "cs"
           ,x min/.estore in = \tikz@td@cs@xmin
           ,x max/.estore in = \tikz@td@cs@xmax
           ,y min/.estore in = \tikz@td@cs@ymin
           ,y max/.estore in = \tikz@td@cs@ymax
           ,z min/.estore in = \tikz@td@cs@zmin
           ,z max/.estore in = \tikz@td@cs@zmax
           ,transformation/.code = {\edef\tikz@td@cs@transformation{#1}}
           ,x min = -5
           ,x max = 5
           ,y min = -5
           ,y max = 5
           ,z min = -5
           ,z max = 5
           ,transformation = {identity_matrix()}
           ,/lua-tikz3dtools/clipped-subspace/plane/.cd % abbreviated "p"
               % normal equation ax + by + cz + d = 0
               ,a/.estore in = \tikz@td@cs@p@a
               ,b/.estore in = \tikz@td@cs@p@b
               ,c/.estore in = \tikz@td@cs@p@c
               ,d/.estore in = \tikz@td@cs@p@d
               ,draw options/.estore in = \tikz@td@cs@p@drawoptions
               ,fill options/.estore in = \tikz@td@cs@p@filloptions
               ,a = 1
               ,b = 1
               ,c = 1
               ,d = 1
               ,draw options = {
                   draw
                   ,line cap = round
                   ,line join = round
               }
               ,fill options = {
                   fill = black
                   ,fill opacity = 0.7
               }
           ,/lua-tikz3dtools/clipped-subspace/line/.cd % abbreviated "l"
               % direction vector
               ,a/.estore in = \tikz@td@cs@l@a
               ,b/.estore in = \tikz@td@cs@l@b
               ,c/.estore in = \tikz@td@cs@l@c
               % point
               ,x/.estore in = \tikz@td@cs@l@x
               ,y/.estore in = \tikz@td@cs@l@y
               ,z/.estore in = \tikz@td@cs@l@z
           ,/lua-tikz3dtools/clipped-subspace/point/.cd % abbreviated "pt"
       ,/lua-tikz3dtools/parametric/.cd % abbreviated "p"
           ,/lua-tikz3dtools/parametric/label/.cd % abbreviated "l"
               ,x/.code = {\edef\tikz@td@p@l@x{#1}}
               ,y/.code = {\edef\tikz@td@p@l@y{#1}}
               ,z/.code = {\edef\tikz@td@p@l@z{#1}}
               ,name/.estore in = \tikz@td@p@l@name
               ,text/.estore in = \tikz@td@p@l@text
               ,transformation/.code = {\edef\tikz@td@p@l@transformation{#1}}
               ,x = {1}
               ,y = {2}
               ,z = 3
               ,name = George
               ,transformation = {identity_matrix()}
               ,text = {Change Me!}
           ,/lua-tikz3dtools/parametric/point/.cd % abbreviated "p"
               ,x/.code = {\edef\tikz@td@p@p@x{#1}}
               ,y/.code = {\edef\tikz@td@p@p@y{#1}}
               ,z/.code = {\edef\tikz@td@p@p@z{#1}}
               ,draw options/.estore in = \tikz@td@p@p@drawoptions
               ,fill options/.estore in = \tikz@td@p@p@filloptions
               ,name/.estore in = \tikz@td@p@p@name
               ,transformation/.code = {\edef\tikz@td@p@p@transformation{#1}}
               ,x = {1}
               ,y = {2}
               ,z = 3
               ,draw options = {draw = red}
               ,fill options = {fill = blue}
               ,name = George
               ,transformation = {identity_matrix()}
           ,/lua-tikz3dtools/parametric/curve/.cd % abbreviated "c"
               ,u min/.estore in = \tikz@td@p@c@umin
               ,u max/.estore in = \tikz@td@p@c@umax
               ,u samples/.estore in = \tikz@td@p@c@usamples
               ,x/.code = {\edef\tikz@td@p@c@x{#1}}
               ,y/.code = {\edef\tikz@td@p@c@y{#1}}
               ,z/.code = {\edef\tikz@td@p@c@z{#1}}
               ,draw options/.estore in = \tikz@td@p@c@drawoptions
               ,name/.estore in = \tikz@td@p@c@name
               ,transformation/.code = {\edef\tikz@td@p@c@transformation{#1}}
               ,u min = 0
               ,u max = 1
               ,u samples = 2
               ,x = {math.cos(u)}
               ,y = {math.sin(u)}
               ,z = 0
               ,draw options = {line cap = round}
               ,name = George
               ,transformation = {identity_matrix()}
           ,/lua-tikz3dtools/parametric/surface/.cd % abbreviated "surf"
               ,u min/.estore in = \tikz@td@p@surf@umin
               ,u max/.estore in = \tikz@td@p@surf@umax
               ,u samples/.estore in = \tikz@td@p@surf@usamples
               ,v min/.estore in = \tikz@td@p@surf@vmin
               ,v max/.estore in = \tikz@td@p@surf@vmax
               ,v samples/.estore in = \tikz@td@p@surf@vsamples
               ,x/.code = {\edef\tikz@td@p@surf@x{#1}}
               ,y/.code = {\edef\tikz@td@p@surf@y{#1}}
               ,z/.code = {\edef\tikz@td@p@surf@z{#1}}
               ,draw options/.estore in = \tikz@td@p@surf@drawoptions
               ,fill options/.estore in = \tikz@td@p@surf@filloptions
               ,name/.estore in = \tikz@td@p@surf@name
               ,transformation/.code = {\edef\tikz@td@p@surf@transformation{#1}}
               ,u min = 0
               ,u max = tau
               ,u samples = 36
               ,v min = 0
               ,v max = pi
               ,v samples = 18
               ,x = {sphere(u,v)[1][1]}
               ,y = {sphere(u,v)[1][2]}
               ,z = {sphere(u,v)[1][3]}
               ,draw options = {draw, line cap = round,line join = round}
               ,fill options = {fill = red, fill opacity = 0.7}
               ,name = Bob
               ,transformation = {identity_matrix()}
           ,/lua-tikz3dtools/parametric/solid/.cd % abbreviated "s"
               ,u min/.estore in = \tikz@td@p@s@umin
               ,u max/.estore in = \tikz@td@p@s@umax
               ,u samples/.estore in = \tikz@td@p@s@usamples
               ,v min/.estore in = \tikz@td@p@s@vmin
               ,v max/.estore in = \tikz@td@p@s@vmax
               ,v samples/.estore in = \tikz@td@p@s@vsamples
               ,w min/.estore in = \tikz@td@p@s@wmin
               ,w max/.estore in = \tikz@td@p@s@wmax
               ,w samples/.estore in = \tikz@td@p@s@wsamples
       ,/lua-tikz3dtools/ode/.cd % abbreviated "ode"
       ,/lua-tikz3dtools/geometric-vector/.cd % abbreviated "gm"
           ,point radius/.estore in = \tikz@td@gm@pointradius
           ,mark length/.estore in = \tikz@td@gm@marklength
           ,mark/.is choice
               ,mark/false/.code = {\edef\tikz@td@gm@mark{0}}
               ,mark/true/.code = {\edef\tikz@td@gm@mark{1}}
           ,mark start/.estore in = \tikz@td@gm@markstart
           ,mark stop/.estore in = \tikz@td@gm@markstop
           ,mark step/.estore in = \tikz@td@gm@markstep
           ,points/.is choice
               ,points/neither/.code = {\edef\tikz@td@gm@points{0}}
               ,points/behind/.code = {\edef\tikz@td@gm@points{1}}
               ,points/both/.code = {\edef\tikz@td@gm@points{2}}
               ,points/front/.code = {\edef\tikz@td@gm@points{3}}
           ,point radius = 0.07
           ,mark length = 2pt
           ,mark = false
           ,mark start = 0
           ,mark stop = 1
           ,mark step = 1cm
           ,points = behind
}