I am interested in finding the intersection of a Ray and a Surface in ArcObjects.
I already know of two solutions. First solution is to use the Locate
method of ISurface:
Dim intersectionPoint As IPoint = surface.Locate(ray, hint)
The other solution is to use the GetLineOfSight
method of IGeoDatabaseBridge (where the variable point
is a calculated point along the path of the ray):
Dim geoDatabaseBridge2 As IGeoDatabaseBridge2 = New GeoDatabaseHelper
geoDatabaseBridge2.GetLineOfSight(surface, baseRay.Origin, point, intersectionPoint, Nothing, Nothing, Nothing, False, False)
Surprisingly, the GetLineOfSight
method is much faster than the locate
method. But I am looking for an even faster solution.
So my question is: Is there any other (and faster) ways to find the intersection between a ray and a surface? Or can you point me in the direction of literature that explains the calculations I need to roll my own?
Thanks!
UPDATE: I have started the process of creating my own Line of Sight algorithm. I have posted my current solution description in a blog post. Thanks again for all of the suggestions.