-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathclock-08.js
84 lines (72 loc) · 2.35 KB
/
clock-08.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
76
77
78
79
80
81
82
83
84
// This is the zoom and fade clock
var clock08 = function(sketch) {
// Angle to use in sin calculation
let angle = 0.0;
// Amount to increment angle by
const delta = 0.025;
sketch.setup = function() {
}
sketch.draw = function() {
let h = sketch.hour() % 12 === 0 ? 12 : sketch.hour() % 12;
let m = sketch.minute();
sketch.background(0);
sketch.translate(sketch.width/2,sketch.height/2);
// Map sin to scale
let hScale = sketch.map(Math.sin(angle), -1, 1, 2, 10);
let mScale = sketch.map(Math.sin(angle), -1, 1, 10, 2);
// Hours
sketch.translate(-sketch.width/4,0)
sketch.fill(sketch.map(Math.sin(angle), -1, 1, 100, 255));
sketch.push();
if (h >= 10) {
drawCharacter(sketch.floor(h/10), hScale);
sketch.translate(6*hScale, 0);
drawCharacter(h%10, hScale);
} else {
drawCharacter(h%10, hScale);
}
sketch.pop();
// Minutes
sketch.translate(sketch.width/2,0)
sketch.fill(sketch.map(Math.sin(angle), -1, 1, 255, 100));
sketch.push();
if (m >= 10) {
sketch.translate(-6*mScale, 0);
drawCharacter(sketch.floor(m/10), mScale);
sketch.translate(6*mScale, 0);
drawCharacter(m%10, mScale);
} else {
sketch.translate(-6*mScale, 0);
drawCharacter(0, mScale);
sketch.translate(6*mScale, 0);
drawCharacter(m%10, mScale);
}
sketch.pop();
// Increase angle
angle += delta;
}
function drawCharacter(character, size) {
let dots = font[character];
sketch.push();
sketch.noStroke();
for (let row = 0; row < dots.length; row++) {
for (let col = 0; col < dots[row].length; col++) {
if (dots[row][col] === 1) {
if (joined(row, col + 1) && joined(row+1,col)) {
sketch.rect(size * col - size*2.5, size * row - size*3.5, size + joined(row, col + 1), size);
sketch.rect(size * col - size*2.5, size * row - size*3.5, size, size + joined(row + 1, col));
} else {
sketch.rect(size * col - size*2.5, size * row - size*3.5, size + joined(row, col + 1), size + joined(row + 1, col));
}
}
}
}
sketch.pop();
function joined(row, col) {
if (row < 0 || row >= dots.length || col < 0 || col >= dots[row].length) {
return false;
}
return dots[row][col] === 1;
}
}
}