-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.js
56 lines (50 loc) · 1.85 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
// Classes
class Rectangle{
constructor(x, y, width, height){
this.x = x;
this.y = y;
this.height = height;
this.width = width;
}
}
//Utils
function getNormalizeVector(vector, magnitude){
var vectorMagnitude = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);
return [vector[0] / vectorMagnitude * magnitude, vector[1] / vectorMagnitude * magnitude];
}
function translateObject(element, dx, dy){
var xString = element.style.left;
var currentX = parseFloat(xString.substring(0, xString.length -2));
element.style.left = currentX + dx + "px";
var yString = element.style.top;
var currentY = parseFloat(yString.substring(0, yString.length -2));
element.style.top = currentY + dy + "px";
}
var nameRegistry = [];
function generateName(){
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
while(nameRegistry.includes(result)){
for ( var i = 0; i < 10; i++ ) {
result += characters.charAt(Math.floor(Math.random() *
charactersLength));
}
}
nameRegistry.push(result);
return result;
}
function isBetween(min, max, val){
return val > min && val < max;
}
function isRectOverlapping(rect1, rect2){
return (isBetween(rect1.x, rect1.x + rect1.width, rect2.x)
|| isBetween(rect1.x, rect1.x + rect1.width, rect2.x + rect2.width))
&& (isBetween(rect1.y, rect1.y + rect1.height, rect2.y)
|| isBetween(rect1.y, rect1.y + rect1.height, rect2.y + rect2.height))
||
(isBetween(rect2.x, rect2.x + rect2.width, rect1.x)
|| isBetween(rect2.x, rect2.x + rect2.width, rect1.x + rect1.width))
&& (isBetween(rect2.y, rect2.y + rect2.height, rect1.y)
|| isBetween(rect2.y, rect2.y + rect2.height, rect1.y + rect1.height));
}