В процессе. Подготовка 2
This commit is contained in:
@@ -115,6 +115,18 @@ func rshift(val: int, n: int) -> int: return (val % 0x100000000) >> n
|
||||
func asinh(val: float): return log(val + sqrt(val * val + 1.0))
|
||||
|
||||
|
||||
func find_up_left(tiles: Array):
|
||||
var x = 0
|
||||
var y = 0
|
||||
for tile in tiles:
|
||||
if x < tile.x: x = tile.x
|
||||
if y < tile.y: y = tile.y
|
||||
for tile in tiles:
|
||||
if tile.x == x and tile.y == y:
|
||||
return tile
|
||||
return null
|
||||
|
||||
|
||||
## Lon./lat. to tile numbers
|
||||
func deg2num(lat_deg: float, lon_deg: float, zoom: int):
|
||||
var lat_rad: = radians(lat_deg)
|
||||
@@ -142,8 +154,8 @@ func dist_per_pixel(lat: float, zoom: int, size: int = 256) -> float:
|
||||
|
||||
|
||||
## Расстояние по горизонтали в метрах, представленное одной плиткой
|
||||
## [paramn lat] - Широта, градусы.[br]
|
||||
## [paramn zoom] - Уровень детализации.[br]
|
||||
## [param lat] - Широта, градусы.[br]
|
||||
## [param zoom] - Уровень детализации.[br]
|
||||
func dist_per_tile(lat: float, zoom: int) -> float:
|
||||
return CE * cos(radians(lat)) / float(2 ** zoom)
|
||||
|
||||
@@ -312,15 +324,15 @@ func neighbors(tile: Tile) -> Array:
|
||||
return tiles
|
||||
|
||||
|
||||
## Возвращает все плитки вокруг заданной плитки
|
||||
## Возвращает все плитки в радиусе [param r] вокруг заданной плитки [param tile]
|
||||
func get_allaround_tiles(tile: Tile, mr: int = 1) -> Array:
|
||||
var xys = {}
|
||||
var mi: int = 2 ** tile.z
|
||||
for r in mr:
|
||||
for a in range(0, 360, 180 / mi):
|
||||
var ra = radians(a)
|
||||
var ix = int(roundf(r * cos(ra))) + tile.x
|
||||
var iy = int(roundf(r * sin(ra))) + tile.y
|
||||
var ix = roundi(r * cos(ra)) + tile.x
|
||||
var iy = roundi(r * sin(ra)) + tile.y
|
||||
var t = Tile.new(ix, iy, tile.z)
|
||||
t.fix_xy()
|
||||
xys[[t.x, t.y]] = false
|
||||
|
||||
Reference in New Issue
Block a user