A distribution of planes is an map that assigns a plane to each point of space. For example:

A distribution can be defined by giving a field of normal vectors to the planes (more precisely, a one-form). In the case above, the normal vectors are [y,0,1].

How would you create a function for plotting distributions in Julia? Which package would you use?

using LazySets, Makie, Polyhedra
using LazySets: HalfSpace, Hyperplane, translate # fix namespace conflicts
# x and y ranges
yrange = range(-2, 2, step=0.4)
xrange = copy(yrange)
# distribution of planes
planes = [Hyperplane([y, 0, 1], 0.0) for y in yrange];
# intersect with bounding box
box = BallInf(zeros(3), 0.1)
patches = [intersection(p, box) for p in planes];
# translate along x and y directions
vec = [translate(p, [x, -y, 0]) for x in xrange for (p, y) in zip(patches, yrange)];

Result:

# plot the array (FIXME: plot3d(vec), etc.)
plot3d(vec[1]); [plot3d!(vec[i]) for i in 2:length(vec)-1]; plot3d!(vec[end])