-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCore.php
95 lines (77 loc) · 2.51 KB
/
Core.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
define('MMaps_Coordinate_Max_Zoom', 25);
class MMaps_Point
{
var $x;
var $y;
function MMaps_Point($x, $y)
{
$this->x = $x;
$this->y = $y;
}
function toString()
{
return sprintf('(%.3f, %.3f)', $this->x, $this->y);
}
function copy()
{
return new MMaps_Point($this->x, $this->y);
}
}
class MMaps_Coordinate
{
var $row;
var $column;
var $zoom;
function MMaps_Coordinate($row, $column, $zoom)
{
$this->row = $row;
$this->column = $column;
$this->zoom = $zoom;
}
function toString()
{
return sprintf('(%.3f, %.3f @%.3f)', $this->row, $this->column, $this->zoom);
}
function equalTo($other)
{
return $this->row == $other->row && $this->column == $other->column && $this->zoom == $other->zoom;
}
function copy()
{
return new MMaps_Coordinate($this->row, $this->column, $this->zoom);
}
function container()
{
return new MMaps_Coordinate(floor($this->row), floor($this->column), $this->zoom);
}
function zoomTo($destination)
{
return new MMaps_Coordinate($this->row * pow(2, $destination - $this->zoom),
$this->column * pow(2, $destination - $this->zoom),
$destination);
}
function zoomBy($distance)
{
return new MMaps_Coordinate($this->row * pow(2, $distance),
$this->column * pow(2, $distance),
$this->zoom + $distance);
}
function up($distance=1)
{
return new MMaps_Coordinate($this->row - $distance, $this->column, $this->zoom);
}
function right($distance=1)
{
return new MMaps_Coordinate($this->row, $this->column + $distance, $this->zoom);
}
function down($distance=1)
{
return new MMaps_Coordinate($this->row + $distance, $this->column, $this->zoom);
}
function left($distance=1)
{
return new MMaps_Coordinate($this->row, $this->column - $distance, $this->zoom);
}
}
?>