-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
129 lines (106 loc) · 4.33 KB
/
index.html
File metadata and controls
129 lines (106 loc) · 4.33 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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Dynamic Systems Evaluator</title>
<!-- Plotly -->
<script src="https://cdn.plot.ly/plotly-2.30.0.min.js"></script>
<!-- KaTeX -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.10/dist/katex.min.css">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.10/dist/katex.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.10/dist/contrib/auto-render.min.js"></script>
<meta property="og:title" content="JLocus – Interactive Control System Visualizer" />
<meta property="og:type" content="website" />
<meta property="og:description" content="An educational, browser-based tool for visualizing control systems, step responses, and root locus using JavaScript." />
<meta property="og:url" content="https://moztoo.github.io/jlocus/" />
<meta property="og:image" content="https://moztoo.github.io/jlocus/img/preview.jpg" />
<link rel="stylesheet" href="./styles.css" />
</head>
<body>
<header>
<div class="title">
<h1>Dynamic Systems Evaluator</h1>
<div class="sub">Root locus · Time response · Bode (σ = 0) · Minimal dark UI</div>
</div>
</header>
<main class="app">
<!-- Left: Controls -->
<section class="card">
<div class="hd">
<div class="label">Model</div>
<div class="tiny">Coefficients in descending powers</div>
</div>
<div class="bd">
<div class="row">
<div class="col">
<label for="numIn">num = []</label>
<input id="numIn" type="text" value="[1]" spellcheck="false" />
</div>
<div class="col">
<label for="denIn">den = []</label>
<input id="denIn" type="text" value="[1, 2, 1]" spellcheck="false" />
</div>
</div>
<div class="spacer"></div>
<label>Plant gain K (before G(s))</label>
<div class="kwrap">
<input id="kSlider" type="range" min="0" max="100" step="0.1" value="1" />
<input id="kInput" class="kbox" type="text" value="1.0" spellcheck="false" />
</div>
<div class="spacer"></div>
<div class="row">
<div class="col">
<label for="inputType">Input type (time response)</label>
<select id="inputType">
<option value="step">Step</option>
<option value="impulse">Impulse</option>
<option value="ramp">Ramp</option>
</select>
</div>
<div class="col">
<label for="tFinal">Final time (s)</label>
<input id="tFinal" type="text" value="10" spellcheck="false" />
</div>
</div>
<div class="btnbar">
<button id="updateBtn">Update all</button>
<button id="resetBtn" class="danger">Reset</button>
</div>
<div id="status" class="status">Ready. Change num/den/K and update.</div>
<div class="spacer"></div>
<label>Transfer function (LaTeX)</label>
<div class="latexBox">
<div id="latexOut"></div>
</div>
<div class="spacer"></div>
<label>Block diagram</label>
<div class="block" id="blockDiagram"></div>
<div class="tiny mt10">
Convention: plant gain <b>K</b> with unity feedback ⇒ characteristic <code>D(s)+K N(s)=0</code>.
</div>
</div>
</section>
<!-- Right: Charts -->
<section class="charts">
<div class="card">
<div class="hd"><div class="label">Plot 1 · Root locus</div></div>
<div class="bd"><div id="plotRloc" class="plot"></div></div>
</div>
<div class="card">
<div class="hd"><div class="label">Plot 2 · Time response</div></div>
<div class="bd"><div id="plotTime" class="plot"></div></div>
</div>
<div class="card">
<div class="hd"><div class="label">Plot 3 · Bode (σ = 0 → s = jω)</div></div>
<div class="bd"><div id="plotBode" class="plot"></div></div>
</div>
<div class="card">
<div class="hd"><div class="label">Plot 4 · Placeholder</div></div>
<div class="bd"><div id="plot4" class="plot"></div></div>
</div>
</section>
</main>
<script type="module" src="./js/main.js"></script>
</body>
</html>