-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutil.js
75 lines (67 loc) · 1.82 KB
/
util.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
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
// util functions
function rand_int(start, end) {
start = Math.floor(start);
end = Math.floor(end);
if (start >= end) {
console.log(`Invalid input to rand_int: start ${start}, end ${end}`);
return start;
}
width = end - start;
return Math.floor((Math.random() * width) + start);
}
function http_get_params() {
params = {}
parts_by_que = location.href.split('?')
if (parts_by_que.length < 2) { // no query string
return params
}
for (var assignstr of parts_by_que[1].split('&')) {
pair = assignstr.split('=')
key = decodeURIComponent(pair[0])
val = decodeURIComponent(pair[1])
params[key] = val;
}
return params
}
function draw_pixel(ctx, x, y) {
ctx.beginPath()
ctx.moveTo(x, y)
ctx.lineTo(x + 1, y + 1);
ctx.stroke();
}
function reset_canvas(canvas, ctx) {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
function fill_canvas(canvas, ctx, clr) {
ctx.fillStyle = clr
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
function rotate_vec(x, y, ang) {
x2 = Math.cos(ang);
y2 = Math.sin(ang);
xe = x * x2 - y * y2
ye = x * y2 + y * x2;
return [xe, ye]
}
function parse_color(color_str) {
return [parseInt(color_str.substr(1, 2), 16),
parseInt(color_str.substr(3, 2), 16),
parseInt(color_str.substr(5, 2), 16)]
}
function color_add(lhs, rhs) {
if (lhs.length != 7 || rhs.length != 7) {
console.log(`Invalid input for color_add ${lhs}, ${rhs}`)
return lhs;
}
var lhs_ar = parse_color(lhs)
var rhs_ar = parse_color(rhs)
var r = Math.min(255, lhs_ar[0] + rhs_ar[0])
var g = Math.min(255, lhs_ar[1] + rhs_ar[1])
var b = Math.min(255, lhs_ar[2] + rhs_ar[2])
return to_rgbstr(r, g, b)
}
function to_rgbstr(r, g, b) {
return "#" + r.toString(16).padStart(2, '0')
+ g.toString(16).padStart(2, '0')
+ b.toString(16).padStart(2, '0')
}