Você está procurando um algoritmo de funil.
Aqui você é simples
http://digestingduck.blogspot.com.es/2010/03/simple-stupid-fupidnel-algorithm.html
Basicamente, o algoritmo identifica arestas como portais e constrói um funil que é testado em relação ao vértice das arestas para verificar se estão dentro ou não do funil.
Na etapa A, o funil é construído com a posição inicial e o portal cruzado pela linha amarela.
Na etapa B, o próximo portal é verificado, o vértice superior fica dentro do funil e, portanto, a linha superior do funil passa por ele. Mas o vértice inferior está fora do funil porque a linha vermelha está embaixo da linha verde; portanto, a linha inferior não passará por ele, continuará passando pelo vértice inferior do portal anterior.
Como você pode verificar, o funil será menor e menor até a etapa F, onde não é possível construir o funil, porque a linha vermelha cria um funil ruim, portanto o vértice superior é escolhido como novo ponto de partida e um novo funil seria ser construído se o ponto final não estiver nessa malha.
Perceba que esse tipo de algoritmo também permite uma solução simples para o problema do tamanho do modelo, porque você pode considerar que os portais são menores pelo raio de 2x do seu modelo.