blob: 8fdcd075497e0bdf68d159bf381ce3dddfe79b43 (
plain)
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/index.css">
<title>Physics for Games</title>
<link rel="shortcut icon" href="favicon/favicon.ico" type="image/x-icon">
</head>
<body>
<header>
<h1><a title="physicsforgames.com" href="/">Physics for Games</a></h1>
</header>
<main>
<nav>
<ul class="outer-tree">
<li><a href="/">Introduction</a></li>
<li>
<span>🏀<span>2D</span></span>
<ul class="inner-tree">
<li><label>Rigidbody</label></li>
<li><a href="/2d/rigidbody/rigidbody_1.html">Linear Forces</a></li>
<li><label>Collisions</label></li>
<li><a href="/2d/_collisions/circle_line.html">Circle-Line</a></li>
<li><a href="/2d/_collisions/rectangle_line.html">Rectangle-Line</a></li>
<li><a href="/2d/_collisions/rectangle_rectangle.html">Rectangle-Rectangle</a></li>
<li><a href="/2d/_collisions/pill_line.html">Pill-Line</a></li>
<li><a href="/2d/_collisions/pill_pill.html">Pill-Pill</a></li>
<li><a href="/2d/_collisions/polygon_polygon.html">Polygon-Polygon</a></li>
</ul>
</li>
<li>
<span>🌠<span>3D</span></span>
<ul class="inner-tree">
</ul>
</li>
<li>
<span>🔧<span>WebAssembly</span></span>
<ul class="inner-tree">
<li><a href="/intro/intro.html">Introduction</a></li>
</ul>
</li>
<li>
<span>🛈<span>About</span></span>
<ul class="inner-tree">
<li><a href="/roadmap.html">Roadmap</a></li>
</ul>
</li>
</ul>
</nav>
<script src="./rigidbody_1/dist/output.js"></script>
<script>
window.onload = function() {
var lPlayElement = document.getElementById('gl_canvas_play'),
lStopElement = document.getElementById('gl_canvas_stop');
lPlayElement.addEventListener('click', function() {
lPlayElement.style.display = 'none';
lStopElement.style.display = 'block';
});
lStopElement.addEventListener('click', function() {
lStopElement.style.display = 'none';
lPlayElement.style.display = 'block';
});
}
</script>
<article>
<h1>Rigidbody #1: Linear Forces</h1>
<section>
<p>
In this first installment of my 2D rigidbody tutorial, we are going to explore linear forces and how we can begin to simulate them in real time on a computer. As you'll come to see, 2D forces are quite easy to understand and implement if you have some basic knowledge of 2D maths. On top of that, they really add a lot of life into what would otherwise be a static 2D scene. Without further ado, let's jump in.
</p>
</section>
<section>
<h2>What is a Force Anyway?</h2>
<p>
</p>
</section>
<section>
<h2>
Live Example
</h2>
<div>
<div class="vector_group">
<label>Force (N)</label>
<input id="force_x" type="number" placeholder="X (Default = 10 N)" step="any"/>
<input id="force_y" type="number" placeholder="Y (Default = 20 N)" step="any"/>
</div>
<button id="apply_force">Apply Force</button>
</div>
<div class="opengl_canvas_container">
<canvas id="gl_canvas" width="640" height="480"></canvas>
<button id="gl_canvas_play" class="play_button">
Play
</button>
<button id="gl_canvas_stop" class="stop_button">
Stop
</button>
</div>
<footer id="references">
<h2>References</h2>
<ul>
</ul>
</footer>
</section>
</article>
</main>
</body>
</html>
|