/* returns negative if there's no intersection, parametric distance if there is */
float ray_plane(const cgm_ray *ray, const struct plane *plane);
float ray_poly(const cgm_ray *ray, const struct poly *poly);
/* returns negative if there's no intersection, parametric distance if there is */
float ray_plane(const cgm_ray *ray, const struct plane *plane);
float ray_poly(const cgm_ray *ray, const struct poly *poly);