% 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
}
