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
|
var FRONT = 0x1, BACK = 0x2, LEFT = 0x4, RIGHT = 0x8, FLOOR = 0x10, CEILING = 0x20
var FRONT_BACK = FRONT | BACK, LEFT_RIGHT = LEFT | RIGHT, FLOOR_CEILING = FLOOR | CEILING
var WALL_SIDES = FRONT | BACK | LEFT | RIGHT
var TOP = CEILING, BOTTOM = FLOOR,
TOP_LEFT = TOP | LEFT,
TOP_RIGHT = TOP | RIGHT,
BOTTOM_LEFT = BOTTOM | LEFT,
BOTTOM_RIGHT = BOTTOM | RIGHT,
TOP_BOTTOM = TOP | BOTTOM
var FRONT_LEFT = FRONT | LEFT,
FRONT_RIGHT = FRONT | RIGHT,
BACK_LEFT = BACK | LEFT,
BACK_RIGHT = BACK | RIGHT
var height_min = 200,
height_max = 2000,
side_min = 10,
side_max = 5000,
resize_margin = 8,
cursor_amp = 1.5,
DEFAULT_PICTURE_WIDTH = 400
var painting_distance_from_wall = 10,
dot_distance_from_picture = 3
var dot_hide_delay = 50, // ms
dot_side = 20
var wall_rotation = {}
wall_rotation[FRONT] = PI
wall_rotation[BACK] = 0
wall_rotation[LEFT] = HALF_PI
wall_rotation[RIGHT] = -HALF_PI
function sidesToString(sides){
var s = ""
if (sides & FRONT) s += "front "
if (sides & BACK) s += "back "
if (sides & LEFT) s += "left "
if (sides & RIGHT) s += "right "
if (sides & TOP) s += "top "
if (sides & BOTTOM) s += "bottom "
return s
}
function side_direction (a, b) {
if (a === b) return 0
if ((a | b) === FRONT_BACK) return 0
if ((a | b) === LEFT_RIGHT) return 0
switch (a) {
case FRONT:
return b & LEFT ? -1 : 1
case BACK:
return b & RIGHT ? -1 : 1
case LEFT:
return b & FRONT ? -1 : 1
case RIGHT:
return b & BACK ? -1 : 1
}
}
|