Estoy interesado en encontrar la intersección de un Rayo y una Superficie de ArcObjects.
Ya sé de dos soluciones. La primera solución es el uso de la Locate
método de ISurface:
Dim intersectionPoint As IPoint = surface.Locate(ray, hint)
La otra solución es el uso de la GetLineOfSight
método de IGeoDatabaseBridge (donde la variable point
se calcula un punto a lo largo de la trayectoria del rayo):
Dim geoDatabaseBridge2 As IGeoDatabaseBridge2 = New GeoDatabaseHelper
geoDatabaseBridge2.GetLineOfSight(surface, baseRay.Origin, point, intersectionPoint, Nothing, Nothing, Nothing, False, False)
Sorprendentemente, el GetLineOfSight
método es mucho más rápido que el locate
método. Pero estoy en busca de una más rápida solución.
Así que mi pregunta es: ¿hay algún otro (y más rápido) maneras de encontrar la intersección entre un rayo y una superficie? O puede que me apunte en la dirección de literatura que explica los cálculos necesito rodar mis propios?
Gracias!
ACTUALIZACIÓN: He iniciado el proceso de crear mi propia Línea de Visión del algoritmo. He publicado mi solución actual descripción en una entrada de blog. Gracias de nuevo por todas las sugerencias.