- Ray<T, D> local_ray(inverse_trans.transform(ray.get_start()),
- inverse_trans.transform_linear(ray.get_direction()));
- return shape->check_intersection(local_ray);
+ LinAl::Vector<T, D> local_dir = inverse_trans.transform_linear(ray.get_direction());
+ float distortion = local_dir.norm();
+ return Ray<T, D>(inverse_trans.transform(ray.get_start()), local_dir, ray.get_limit()*distortion);