WIP: Visuals and geometry

Better to start with np.empty([num_segments, 3]) and avoid np.append (which allocates an entirely new array).