I have a collection of non-self-overlapping simple polygons P. In actuality, they are 2D triangles in 3D-space.
I'm looking for a data structure which, given a line L, has a relatively fast lookup for all polygons p in P which L intersects with. If it can give me the intersection point, that is a bonus, but I can calculate this myself if I just get the polygons, in any case.
I've used kd-trees and red-black-trees before, but as those deal with points, I am hoping that there is a data structure better suited to my problem. I'm expecting it to be some sort of BSP-tree, but am open to other suggestions.