render shapes with an arbitrary normal vector by generating an orthonormal basis