222
 правки
Изменения
м
     graph buildVisibilityGraph(Set<Segment> segments)           vertices = getVertices(segments) <tex> \cup\ \{S, T\} </tex>           //все вершины препятствий, а также начальная и конечная вершины           graph = visibilityGraph(vertices)                  //изначально в графе только вершины           '''for''' Vertex v '''in''' vertices                           //для каждой вершины                 '''for''' Vertex w '''in''' getVisibleVertices(v, segments) //добавляем в граф все видимые из нее вершины                       visibilityGraph.addEdge(v, w)           '''return''' visibilityGraph
     Set<Vertex> getVisibleVertices(Vertex v, Set<Segment> segments)           Set<Vertex> answer     // Инициализируем статус           '''for''' Segment s '''in''' segments                 '''if''' intersection s and ray from v to up exists                       status.add(s)     // Инициализируем множество вершин, которые нужно рассматривать           '''for''' Point w '''in''' segments                 '''if''' w.x >= v.x                       currentVertices.add(w)           sort(currentVertices) by angle     // Для каждой вершины проверяем, видима ли она и обновляем статус           '''for''' Point w '''in''' currentVertices                 '''if''' intersection vw and status.closest not exists                       answer.add(w)                 delete from status all segments ending in w
→Псевдокод
===== Псевдокод =====
Здесь функция getVisibleVertices(<tex> v </tex>) возвращает все видимые из <tex> v </tex> вершины и выглядит так:
          add in status all segments beginning in w
       '''return''' answer
