3D rotation

Core idea of handling rotation is using a variant of Rodrigues' rotation formula . Explained in a Chinese video:

As a helper function, Triadica provide:

triadica.math/rotate-3d-fn origin axis-direction radian

which creates a rotation function that could rotate:

let
    rotation $ rotate-3d-fn ([] 0 100 0) ([] -1 1 1) 0.04
  rotation p