Ви шукаєте алгоритм воронки.
Ось ви простий
http://digestingduck.blogspot.com.es/2010/03/simple-stupid-funnel-algorithm.html
В основному алгоритм ідентифікує краї як портали та будує воронку, яка тестується на вершину ребер, щоб перевірити, чи є вони всередині воронки чи ні.
На кроці A лійка будується зі стартовим положенням і порталом, перекресленим жовтою лінією.
На етапі B перевіряється наступний портал, верхня вершина знаходиться всередині воронки, тому верхня лінія воронки тепер проходить, хоча вона. Але нижня вершина знаходиться поза лійки, оскільки червона лінія знаходиться під зеленою лінією, тому нижня лінія не буде проходити, хоча вона продовжить проходити через нижню вершину попереднього порталу.
Як ви можете перевірити, воронка буде меншою та меншою, аж до кроку F, де воронку неможливо побудувати, оскільки червона лінія робить погану воронку, тому верхня вершина вибирається як нова початкова точка, а нова воронка буде будувати, якщо кінцева точка не в цій сітці.
Зрозумійте, що подібний алгоритм дає можливість простого вирішення проблеми розміру моделі, тому що ви можете врахувати, що портали менші за 2xрадіус вашої моделі.