MapProjection
Движок линейной проекции для преобразования между внешними мировыми координатами и внутренними координатами карты MapCanvas.
Обзор
MapProjection выполняет быстрое выровненное по осям линейное преобразование между внешними координатами игрового мира и внутренними координатами MapCanvas.
Формула преобразования:
- mapX = worldX * scaleX + offsetX
- mapY = worldY * scaleY + offsetY
Калибровка:
- Прямое задание масштаба и смещения (MapProjection(scaleX, offsetX, scaleY, offsetY)).
- Калибровка по двум реперным парам точек через MapProjection.axisAligned(...) или удобный билдер MapProjection.affine().
Калибровка проекции мировых координат в координаты карты
MapProjection projection = MapProjection.affine()
.worldPoint(-1000, -1000).mapPoint(0, 0)
.worldPoint(1000, 1000).mapPoint(2048, 2048)
.build();
Связанные ссылки
- MapCanvas: Интерактивный виджет 2D-карты, расширяющий WorldCanvas поддержкой размеров карты, слоями текстур и сетки, проекцией координат и маркерами.
- WorldCanvas: Холст бесконечного 2D/3D пространства с поддержкой панорамирования, зума камеры, преобразования координат, фоновых слоев и привязанных экранных виджетов.
API
MapProjection(float, float, float, float)
Создает MapProjection напрямую с явными значениями масштаба и смещения.
| Параметр | Тип | Описание |
|---|---|---|
scaleX |
float |
Масштабный коэффициент по горизонтали. |
offsetX |
float |
Смещение сдвига по горизонтали. |
scaleY |
float |
Масштабный коэффициент по вертикали. |
offsetY |
float |
Смещение сдвига по вертикали. |
MapProjection::affine()
Запускает билдер для плавной настройки проекции через калибровочные пары точек.
Возвращает Builder: Новый экземпляр билдера Builder..
MapProjection::axisAligned(float, float, float, float, float, float, float, float)
Создает выровненную по осям проекцию, откалиброванную по двум парам точек мир-карта.
| Параметр | Тип | Описание |
|---|---|---|
worldX1 |
float |
Мировая координата X первой точки калибровки. |
worldY1 |
float |
Мировая координата Y первой точки калибровки. |
mapX1 |
float |
Координата X карты, соответствующая worldX1. |
mapY1 |
float |
Координата Y карты, соответствующая worldY1. |
worldX2 |
float |
Мировая координата X второй точки калибровки. |
worldY2 |
float |
Мировая координата Y второй точки калибровки. |
mapX2 |
float |
Координата X карты, соответствующая worldX2. |
mapY2 |
float |
Координата Y карты, соответствующая worldY2. |
Возвращает MapProjection: Созданный экземпляр MapProjection..
MapProjection::identity()
Возвращает единичную проекцию, где мировые координаты соответствуют координатам карты 1:1.
Возвращает MapProjection: Созданный экземпляр MapProjection..
MapProjection::mapX(float)
Преобразует внешнюю мировую координату X в координату X карты.
| Параметр | Тип | Описание |
|---|---|---|
worldX |
float |
Мировая координата X. |
Возвращает float: Координата или числовое значение с плавающей точкой..
MapProjection::mapY(float)
Преобразует внешнюю мировую координату Y в координату Y карты.
| Параметр | Тип | Описание |
|---|---|---|
worldY |
float |
Мировая координата Y. |
Возвращает float: Координата или числовое значение с плавающей точкой..
MapProjection::offsetX()
Возвращает смещение сдвига по горизонтали X.
Возвращает float: Смещение сдвига оси..
MapProjection::offsetY()
Возвращает смещение сдвига по вертикали Y.
Возвращает float: Смещение сдвига оси..
MapProjection::project(float, float)
Преобразует внешние мировые координаты в точку на карте.
| Параметр | Тип | Описание |
|---|---|---|
worldX |
float |
Мировая координата X. |
worldY |
float |
Мировая координата Y. |
Возвращает ViewportPoint: Преобразованная 2D-координатная точка..
MapProjection::scaleX()
Возвращает масштабный коэффициент по горизонтали X.
Возвращает float: Масштабный коэффициент оси..
MapProjection::scaleY()
Возвращает масштабный коэффициент по вертикали Y.
Возвращает float: Масштабный коэффициент оси..
MapProjection::unproject(float, float)
Выполняет обратное преобразование точки карты во внешние мировые координаты.
| Параметр | Тип | Описание |
|---|---|---|
mapX |
float |
Координата X карты. |
mapY |
float |
Координата Y карты. |
Возвращает ViewportPoint: Преобразованная 2D-координатная точка..
MapProjection::worldX(float)
Выполняет обратное преобразование координаты X карты во внешнюю мировую координату X.
| Параметр | Тип | Описание |
|---|---|---|
mapX |
float |
Координата X карты. |
Возвращает float: Координата или числовое значение с плавающей точкой..
MapProjection::worldY(float)
Выполняет обратное преобразование координаты Y карты во внешнюю мировую координату Y.
| Параметр | Тип | Описание |
|---|---|---|
mapY |
float |
Координата Y карты. |
Возвращает float: Координата или числовое значение с плавающей точкой..