Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • B BHS Claw Engine CE Weather
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Container Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • 1653 Claw Engine Модуль динамических погодных условий
  • BHS Claw Engine CE Weather
  • Wiki
  • Claw engine "модуль динамических погодных условий"
  • Delaunaystride
  • Delaunay
  • Site.cs

Site.cs · Changes

Page history
Update /Claw Engine "Модуль динамических погодных условий" authored Apr 25, 2025 by Казаков Лев Константинович's avatar Казаков Лев Константинович
Hide whitespace changes
Inline Side-by-side
Claw-Engine-"Модуль-динамических-погодных-условий"/DelaunayStride/Delaunay/Site.cs.md 0 → 100644
View page @ 571335be
# [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
Clone repository
  • Claw Engine "Модуль динамических погодных условий"
    • DelaunayStride
      • Delaunay
        • Edge.cs
        • EdgeList.cs
        • EdgeReorderer.cs
        • Halfedge.cs
        • ICoord.cs
        • LR.cs
        • PriorityQueue.cs
        • Site.cs
        • SiteList.cs
        • Vertex.cs
        • Voronoi.cs
      • Geo
View All Pages