/
pos.js
37 lines (29 loc) · 821 Bytes
/
pos.js
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
// Phosphor - a browser-based microcomputer
// Copyright (c) 2017-2018 Marc Lepage
'use strict';
module.exports = {
clone(p) {
return [p[0], p[1]];
},
// return <0 if a<b, 0 if a==b, >0 if a>b
compare(a, b) {
return a[0] == b[0] ? a[1] - b[1] : a[0] - b[0];
},
// return whether a in [start, end]
contains(start, end, p) {
return (start[0] < p[0] || start[0] == p[0] && start[1] <= p[1])
&& (p[0] < end[0] || p[0] == end[0] && p[1] < end[1]);
},
// ensure values are in order
sort(a, b) {
if (b[0] < a[0] || b[0] == a[0] && b[1] < a[1]) {
var tmp = a[0]; a[0] = b[0]; b[0] = tmp;
tmp = a[1]; a[1] = b[1]; b[1] = tmp;
}
},
// swap the values
swap(a, b) {
var tmp = a[0]; a[0] = b[0]; b[0] = tmp;
tmp = a[1]; a[1] = b[1]; b[1] = tmp;
}
};