This repository was archived by the owner on Dec 22, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 248
Expand file tree
/
Copy path09-walking-5.html
More file actions
95 lines (81 loc) · 3.06 KB
/
09-walking-5.html
File metadata and controls
95 lines (81 loc) · 3.06 KB
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
85
86
87
88
89
90
91
92
93
94
95
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Walking 5</title>
<link rel="stylesheet" href="../include/style.css">
</head>
<body>
<header>
Example from <a href="http://amzn.com/1430236655?tag=html5anim-20"><em>Foundation HTML5 Animation with JavaScript</em></a>
</header>
<canvas id="canvas" width="400" height="400"></canvas>
<aside>Press and drag slider handles with mouse.</aside>
<script src="../include/utils.js"></script>
<script src="./classes/segment.js"></script>
<script src="./classes/slider.js"></script>
<script>
window.onload = function () {
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
segment0 = new Segment(100, 30),
segment1 = new Segment(100, 20),
segment2 = new Segment(100, 30),
segment3 = new Segment(100, 20),
speedSlider = new Slider(0, 0.2, 0.08),
thighRangeSlider = new Slider(0, 90, 45),
thighBaseSlider = new Slider(0, 180, 90),
calfRangeSlider = new Slider(0, 90, 45),
calfOffsetSlider = new Slider(-3.14, 3.14, -1.57),
cycle = 0;
segment0.x = 200;
segment0.y = 200;
segment1.x = segment0.getPin().x;
segment1.y = segment0.getPin().y;
segment2.x = 200;
segment2.y = 200;
segment3.x = segment2.getPin().x;
segment3.y = segment2.getPin().y;
speedSlider.x = 10;
speedSlider.y = 10;
speedSlider.captureMouse(canvas);
thighRangeSlider.x = 30;
thighRangeSlider.y = 10;
thighRangeSlider.captureMouse(canvas);
thighBaseSlider.x = 50;
thighBaseSlider.y = 10;
thighBaseSlider.captureMouse(canvas);
calfRangeSlider.x = 70;
calfRangeSlider.y = 10;
calfRangeSlider.captureMouse(canvas);
calfOffsetSlider.x = 90;
calfOffsetSlider.y = 10;
calfOffsetSlider.captureMouse(canvas);
function walk (segA, segB, cyc) {
var angle0 = (Math.sin(cyc) * thighRangeSlider.value + thighBaseSlider.value) * Math.PI / 180,
angle1 = (Math.sin(cyc + calfOffsetSlider.value) * calfRangeSlider.value + calfRangeSlider.value) * Math.PI / 180;
segA.rotation = angle0;
segB.rotation = segA.rotation + angle1;
segB.x = segA.getPin().x;
segB.y = segA.getPin().y;
}
(function drawFrame () {
window.requestAnimationFrame(drawFrame, canvas);
context.clearRect(0, 0, canvas.width, canvas.height);
cycle += speedSlider.value;
walk(segment0, segment1, cycle);
walk(segment2, segment3, cycle + Math.PI);
segment0.draw(context);
segment1.draw(context);
segment2.draw(context);
segment3.draw(context);
speedSlider.draw(context);
thighRangeSlider.draw(context);
thighBaseSlider.draw(context);
calfRangeSlider.draw(context);
calfOffsetSlider.draw(context);
}());
};
</script>
</body>
</html>