|
|
|
# [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)
|
|
|
|
|
|
|
|
Этот файл представляет собой класс вершин триангуляции Делоне.
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Поля**
|
|
|
|
|
|
|
|
- `private static Stack<Site> _pool` — стек удаленных точек. Используется для повторного использования объектов Site.
|
|
|
|
- `private static readonly float EPSILON_SQR` — квадрат эпсилон-значения, используемый для сравнения координат с допуском.
|
|
|
|
- `private Vector2 _coord` — координаты точки, соответствующей данной вершине
|
|
|
|
- `private uint _siteIndex` — индекс вершины в списке точек
|
|
|
|
- `private List<Edge> _edges` — список ребер, инцидентных данной вершине
|
|
|
|
- `private List<Side> _edgeOrientations` — список ориентаций ребер, соответствующих данной вершине
|
|
|
|
- `private List<Vector2> _region` — регион, ограниченный ребрами, построенными на основе данной вершины, в виде списка координат
|
|
|
|
- `public uint color` — цвет вершины. Не используется в построении графа, может использоваться для хранения дополнительной информации
|
|
|
|
- `public float weight` — вес вершины. Не используется в построении графа, содержит случайное значение
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Свойства**
|
|
|
|
|
|
|
|
- `public Vector2 Coord` — координаты точки, соответствующей данной вершине
|
|
|
|
- `public float x` — координата X точки, соответствующей данной вершине
|
|
|
|
- `internal float y` — координата Y точки, соответствующей данной вершине.
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Методы**
|
|
|
|
### `public float Dist(ICoord p)`
|
|
|
|
|
|
|
|
Вычисляет расстояние от текущей вершины до заданной.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `p` — координата точки, до которой нужно измерить расстояние.
|
|
|
|
|
|
|
|
- **Возвращает:** расстояние между точками.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `public static Site Create(Vector2 p, uint index, float weight, uint color)`
|
|
|
|
|
|
|
|
Создаёт вершину с указанными параметрами, используя внутренний пул при возможности.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `p` — координаты вершины.
|
|
|
|
- `index` — индекс вершины.
|
|
|
|
- `weight` — вес вершины.
|
|
|
|
- `color` — цвет вершины.
|
|
|
|
|
|
|
|
- **Возвращает:** созданная вершина `Site`.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `internal static void SortSites(List<Site> sites)`
|
|
|
|
|
|
|
|
Сортирует список вершин по координатам (в первую очередь по Y, затем по X).
|
|
|
|
|
|
|
|
---
|
|
|
|
### `public int CompareTo(object obj)`
|
|
|
|
|
|
|
|
Сравнивает вершины по координатам. При необходимости меняет индексы вершин для сохранения порядка.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `obj` — объект для сравнения.
|
|
|
|
|
|
|
|
- **Возвращает:** `-1`, `0` или `1` в зависимости от порядка.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `public void Dispose()`
|
|
|
|
|
|
|
|
Очищает внутренние данные вершины и возвращает её в пул.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private void Clear()`
|
|
|
|
|
|
|
|
Удаляет данные о рёбрах, ориентациях и регионе у вершины.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `public void AddEdge(Edge edge)`
|
|
|
|
|
|
|
|
Добавляет инцидентное ребро к вершине.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `edge` — добавляемое ребро.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `internal List<Vector2> Region(Rectangle clippingBounds)`
|
|
|
|
|
|
|
|
Формирует регион, окружающий вершину, ограниченный заданными границами.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `clippingBounds` — границы диаграммы.
|
|
|
|
|
|
|
|
- **Возвращает:** список точек, формирующих регион.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private void ReorderEdges()`
|
|
|
|
|
|
|
|
Переупорядочивает рёбра и определяет их ориентации для корректного построения региона.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private List<Vector2> ClipToBounds(Rectangle bounds)`
|
|
|
|
|
|
|
|
Обрезает регион вершины по заданным границам.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `bounds` — ограничивающий прямоугольник.
|
|
|
|
|
|
|
|
- **Возвращает:** список точек, ограниченных границами.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private void Connect(List<Vector2> points, int j, Rectangle bounds, bool closingUp = false)`
|
|
|
|
|
|
|
|
Добавляет в список точку, полученную по инцидентному ребру, корректно обрабатывая переходы между сторонами границы.
|
|
|
|
|
|
|
|
- **Параметры:**
|
|
|
|
- `points` — текущий список точек региона.
|
|
|
|
- `j` — индекс ребра.
|
|
|
|
- `bounds` — границы области.
|
|
|
|
- `closingUp` — флаг, обозначающий, является ли соединение завершающим.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private static bool CloseEnough(Vector2 p0, Vector2 p1)`
|
|
|
|
|
|
|
|
Проверяет, достаточно ли близки две точки по евклидову расстоянию.
|
|
|
|
|
|
|
|
- **Возвращает:** `true`, если расстояние меньше `EPSILON_SQR`, иначе `false`.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private Site(Vector2 p, uint index, float weight, uint color)`
|
|
|
|
|
|
|
|
Конструктор `Site`, инициализирует поля вершины.
|
|
|
|
|
|
|
|
- **Примечание:** Конструктор приватный. Для создания объектов следует использовать метод `Create`.
|
|
|
|
|
|
|
|
---
|
|
|
|
### `private Site Init(Vector2 p, uint index, float weight, uint color)`
|
|
|
|
|
|
|
|
Инициализирует объект вершины.
|
|
|
|
|
|
|
|
- **Возвращает:** текущий объект `Site`.
|
|
|
|
|
|
|
|
---
|
|
|
|
## **Примечания**
|
|
|
|
|
|
|
|
Данный класс и его методы применяются в:
|
|
|
|
- [Edge.cs](https://git.miem.hse.ru/1653/bhs-claw-engine-ce-weather/-/blob/develop/Location%20Generation%20Module/Location_Generation_Module/DelaunayStride/Delaunay/Edge.cs)
|
|
|
|
- [Halfedge.cs](https://git.miem.hse.ru/1653/bhs-claw-engine-ce-weather/-/blob/develop/Location%20Generation%20Module/Location_Generation_Module/DelaunayStride/Delaunay/Halfedge.cs)
|
|
|
|
- [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)
|
|
|
|
- [SiteList.cs](https://git.miem.hse.ru/1653/bhs-claw-engine-ce-weather/-/blob/develop/Location%20Generation%20Module/Location_Generation_Module/DelaunayStride/Delaunay/SiteList.cs)
|
|
|
|
- [Voronoi.cs](https://git.miem.hse.ru/1653/bhs-claw-engine-ce-weather/-/blob/develop/Location%20Generation%20Module/Location_Generation_Module/DelaunayStride/Delaunay/Voronoi.cs) |
|
|
\ No newline at end of file |