Cauldron2D.Projection.Volume.Shapes (Cauldron2D v0.2.2)

Copy Markdown View Source

The shapes Cauldron2D.Projection.Volume knows without being told: a sphere, a cylinder, a cone, a beam, and a set of whole grid tiles.

{:sphere, 1.5, 0.0}                 half a ball standing on the ground
{:sphere, 1.0, 1.5}                 a ball floating a tile and a half up
{:cylinder, 3.0, 2.0}               a disc of three tiles, two tiles tall
{:cone, 6.0, :math.pi() / 2, 0.0, 2.0}   a quarter turn wide, six tiles long
{:beam, 8.0, 1.0, 0.0, 2.0}         a tile wide and eight long, along `+x`
{:cells, MapSet.new([{0, 0}, {1, 0}]), 2.0}   two whole tiles

Everything is measured from the volume's own place on the ground, with z running up. A sphere's second number is how far its centre floats; at 0.0 it is a dome. A cone and a beam run along a heading in radians, 0 along +x, and a cone's spread is the angle it opens to, less than half a turn. :cells covers whole tiles of the grid the volume stands on, named by their offset from it, which is how a table that plays by squares marks an area out; put the volume on a tile corner for it.

Nothing below the ground counts, so these shapes do not clip themselves to it.

Summary

Functions

The shapes this module takes, for a caller checking one before it is drawn.

Functions

kinds()

@spec kinds() :: [atom()]

The shapes this module takes, for a caller checking one before it is drawn.