# 指令介绍
简易 Raymarch 小玩具
用法：march `<scene>`
例：march sphere(1).color(red) box(0.5, 2.0, 0.5).pos(0, 0, 0) cam(0.5).pos(-5).lookat(0)

# 主要语法
`<scene>` ::= `<scene>` "." `<op>` |`<obj>`

`<obj>`   ::= `<obj_ty>` | `<obj_ty>` "(" <args> ")"

`<op>`    ::= `<op_ty>` | `<op_ty>` "(" `<args>` ")"

`<args>`  ::= `<args>` "," `<arg>` | `<arg>`

其中 `obj_ty`、`op_ty` 分别为物体类型（如 `cube`、`sphere`、`torus` 等）与变换类型（如 `pos`、`rot`）。

# 支持的物体
目前支持的物体有（不包含 alias）：
`cube`：可选参数长宽高
`sphere`：可选参数半径
`torus`：可选参数半径与粗细
`cylinder`：可选参数半径与高度
`capsule`：可选参数高度与半径

特殊物体：
`camera`：可选参数焦距

# 支持的变换
目前支持的变换有
`pos`
`rot`
`color`
`lookat`

# 特殊说明
`<op_ty>` 不包含 scale。非正交的变换会破坏 SDF 的性质。