|
|
|
# **`EdgeReorderer.cs`**
|
|
|
|
|
|
|
|
Файл представляет собой класс для задания Эйлеровой ориентации ребер. При данной ориентации каждая вершина имеет одинаковые полустепень захода и полустепень исхода. В данном случае ориентация составляется с помощью создания пути, проходящего через все ребра.
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Перечисления**
|
|
|
|
|
|
|
|
- `VertexOrSite` — перечисление, определяющее критерий ориентации ребер:
|
|
|
|
- `VERTEX` — ориентация по вершинам в диаграмме Вороного
|
|
|
|
- `SITE` — ориентация по вершинам в триангуляции Делоне
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Поля**
|
|
|
|
|
|
|
|
- `private List<Edge> _edges` — сортированный список ребер, которым соответствует список ориентаций.
|
|
|
|
- `private List<Side> _edgeOrientations` — список, содержащий ориентацию ребер.
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Свойства**
|
|
|
|
|
|
|
|
- `public List<Edge> edges`: возвращает отсортированный список ребер, которым соответствует список ориентаций.
|
|
|
|
- `public List<Side> edgeOrientations`: возвращает список, содержащий ориентацию ребер.
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Методы**
|
|
|
|
### `public EdgeReorderer(List<Edge> origEdges, VertexOrSite criterion)`
|
|
|
|
|
|
|
|
Создает объект класса и задает ориентацию ребрам.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `origEdges` — список ребер, которым задается ориентация
|
|
|
|
- `criterion` — критерий ориентации: по вершинам или по сайтам
|
|
|
|
|
|
|
|
---
|
|
|
|
### `public void Dispose()`
|
|
|
|
|
|
|
|
Освобождает ресурсы, очищая поля класса.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private List<Edge> ReorderEdges(List<Edge> origEdges, VertexOrSite criterion)`
|
|
|
|
|
|
|
|
Задает ориентацию ребрам и сортирует их в соответствии с составленным путем.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `origEdges` — исходный список ребер.
|
|
|
|
- `criterion` — критерий, определяющий способ ориентации (по вершинам или сайтам).
|
|
|
|
|
|
|
|
- **Возвращает:** сортированный список ребер с корректной ориентацией.
|
|
|
|
|
|
|
|
- **Примечания:** Алгоритм предполагает, что граф образует простой цикл. При передаче несвязанных ребер может возникнуть бесконечный цикл.
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Примечания**
|
|
|
|
|
|
|
|
Данный класс и его методы применяются в [Site.cs](https://git.miem.hse.ru/1653/bhs-claw-engine-ce-weather/-/blob/develop/Location%20Generation%20Module/Location_Generation_Module/DelaunayStride/Delaunay/Site.cs) |
|
|
\ No newline at end of file |