Most of these functions are taken from `fresnel`, but I intend to implement more convenient utilities from `lens`.