| Safe Haskell | None |
|---|
DSMC.Traceables.Parser
Description
Parser for body definitions.
Body definition contains a number of solid definitions and ends with the top level object definition. RHS of solid equations may reference other solids to compose into complex bodies.
Multiple-body compositions are right-associative.
# comment # define few primitives solid b1 = sphere (0, 0, 0; 5); solid p1 = plane (0, 0, 0; 1, 0, 0); # define a composition solid body = b1 and p1; # assign it to be the top level object tlo body;
Statements must end with a semicolon (newlines are optional). Excessive spaces are ignored.
Top-level object line must reference a previously defined solid.
Syntax for primitives follows the signatures of Traceables
constructors for plane and sphere, but differs for cylinder
and cone, as this module provides access only to frustums
(cylinderFrustum and coneFrustum).
- Half-space
-
plane (px, py, pz; nx, ny, nz), where(px, py, pz)is a point on a plane which defines the half-space and(nx, ny, nz)is a normal to the plane (outward to the half-space), not necessarily a unit vector. - Sphere
-
sphere (cx, cy, cz; r), where(cx, cy, cz)is a central point of a sphere andris radius. - Right circular cylinder
-
cylinder (p1x, p1y, p1z; p2x, p2y, p2z; r)where(p1x, p1y, p1z)and(p2x, p2y, p2z)are bottom and top points on axis andris radius. - Right circular conical frustum
-
cone (p1x, p1y, p1z; r1; p2x, p2y, p2z; r2)where(p1x, p1y, p1z)and(p2x, p2y, p2z)are bottom and top points on cone axis andr1,r2are the corresponding radii.