rubyneat 0.3.5.alpha.3 → 0.3.5.alpha.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. checksums.yaml +4 -4
  2. data/.semver +1 -1
  3. data/Gemfile +19 -19
  4. data/Gemfile.lock +39 -33
  5. data/README.md +66 -0
  6. data/Rakefile +19 -2
  7. data/bin/neat +4 -60
  8. data/lib/rubyneat/cli.rb +5 -0
  9. data/lib/rubyneat/cli/generate.rb +131 -0
  10. data/lib/rubyneat/cli/main.rb +54 -0
  11. data/lib/rubyneat/cli/templates/generate/Gemfile.tt +17 -0
  12. data/lib/rubyneat/cli/templates/generate/README.md.tt +1 -0
  13. data/lib/rubyneat/cli/templates/generate/bin/neat.tt +14 -0
  14. data/{neater/xor_neat.rb → lib/rubyneat/cli/templates/generate/neater.tt} +7 -22
  15. data/rubyneat.gemspec +73 -297
  16. data/rubyneat.gemspec.orig +384 -0
  17. metadata +76 -292
  18. data/.idea/.name +0 -1
  19. data/.idea/.rakeTasks +0 -7
  20. data/.idea/dictionaries/trader.xml +0 -3
  21. data/.idea/encodings.xml +0 -5
  22. data/.idea/misc.xml +0 -5
  23. data/.idea/modules.xml +0 -9
  24. data/.idea/rubyneat.iml +0 -198
  25. data/.idea/runConfigurations/invpend_neat.xml +0 -26
  26. data/.idea/runConfigurations/sigdebug_neat.xml +0 -24
  27. data/.idea/runConfigurations/xor_neat.xml +0 -26
  28. data/.idea/runConfigurations/xordebug_neat.xml +0 -24
  29. data/.idea/runConfigurations/xorsin_neat.xml +0 -24
  30. data/.idea/scopes/scope_settings.xml +0 -5
  31. data/.idea/vcs.xml +0 -7
  32. data/.idea/workspace.xml +0 -1151
  33. data/.yardoc/checksums +0 -11
  34. data/.yardoc/object_types +0 -0
  35. data/.yardoc/objects/root.dat +0 -0
  36. data/.yardoc/proxy_types +0 -0
  37. data/Guardfile +0 -8
  38. data/doc/ControllerPoint.html +0 -125
  39. data/doc/CuteA.html +0 -286
  40. data/doc/CuteB.html +0 -297
  41. data/doc/DSL.html +0 -883
  42. data/doc/NEAT.html +0 -588
  43. data/doc/NEAT/BasicNeuronTypes.html +0 -136
  44. data/doc/NEAT/BasicNeuronTypes/BiasNeuron.html +0 -518
  45. data/doc/NEAT/BasicNeuronTypes/CosineNeuron.html +0 -274
  46. data/doc/NEAT/BasicNeuronTypes/InputNeuron.html +0 -366
  47. data/doc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +0 -275
  48. data/doc/NEAT/BasicNeuronTypes/SineNeuron.html +0 -274
  49. data/doc/NEAT/BasicNeuronTypes/TanhNeuron.html +0 -274
  50. data/doc/NEAT/Controller.html +0 -2490
  51. data/doc/NEAT/Controller/NeatSettings.html +0 -3985
  52. data/doc/NEAT/Critter.html +0 -1037
  53. data/doc/NEAT/Critter/Genotype.html +0 -1601
  54. data/doc/NEAT/Critter/Genotype/Gene.html +0 -979
  55. data/doc/NEAT/Critter/Phenotype.html +0 -603
  56. data/doc/NEAT/DSL.html +0 -1255
  57. data/doc/NEAT/Evaluator.html +0 -420
  58. data/doc/NEAT/Evolver.html +0 -602
  59. data/doc/NEAT/Evolver/CritterOp.html +0 -551
  60. data/doc/NEAT/Expressor.html +0 -327
  61. data/doc/NEAT/Graph.html +0 -402
  62. data/doc/NEAT/Graph/DependencyResolver.html +0 -478
  63. data/doc/NEAT/Graph/GraphException.html +0 -123
  64. data/doc/NEAT/NeatException.html +0 -123
  65. data/doc/NEAT/NeatOb.html +0 -567
  66. data/doc/NEAT/Neuron.html +0 -1067
  67. data/doc/NEAT/Operator.html +0 -162
  68. data/doc/NEAT/Population.html +0 -1961
  69. data/doc/NEAT/Trait.html +0 -169
  70. data/doc/_index.html +0 -373
  71. data/doc/class_list.html +0 -54
  72. data/doc/css/common.css +0 -1
  73. data/doc/css/full_list.css +0 -57
  74. data/doc/css/style.css +0 -339
  75. data/doc/file_list.html +0 -53
  76. data/doc/frames.html +0 -26
  77. data/doc/index.html +0 -373
  78. data/doc/js/app.js +0 -219
  79. data/doc/js/full_list.js +0 -178
  80. data/doc/js/jquery.js +0 -4
  81. data/doc/method_list.html +0 -1415
  82. data/doc/top-level-namespace.html +0 -164
  83. data/foo/foo_aquarium_example.rb +0 -38
  84. data/foo/foo_gosu.rb +0 -99
  85. data/foo/foo_rubygoo.rb +0 -104
  86. data/foo/foo_sdl.rb +0 -34
  87. data/foo/icon.png +0 -0
  88. data/neater/invpend_neat.rb +0 -150
  89. data/neater/rnlib/inverted_pendulum.rb +0 -380
  90. data/neater/rnlib/xor.rb +0 -10
  91. data/neater/sigdebug_neat.rb +0 -136
  92. data/neater/xoranalog_neat.rb +0 -138
  93. data/neater/xorsin_neat.rb +0 -143
  94. data/projectFilesBackup/.idea/rubyneat.iml +0 -180
  95. data/public/.directory +0 -4
  96. data/public/background.png +0 -0
  97. data/public/background.xcf +0 -0
  98. data/public/cart.png +0 -0
  99. data/public/cart.xcf +0 -0
  100. data/public/metalpoles_molton_ball_l.jpg +0 -0
  101. data/public/old_background.png +0 -0
  102. data/public/pointer.png +0 -0
  103. data/public/pointer.xcf +0 -0
  104. data/public/pole.kra +0 -0
  105. data/public/pole.png +0 -0
  106. data/public/pole.xcf +0 -0
  107. data/public/wheel-of-year-stone-DD-131-WOYS.jpg +0 -0
  108. data/public/wheel.png +0 -0
  109. data/public/wheel.xcf +0 -0
  110. data/public/wood-planks-texture.jpg +0 -0
  111. data/rdoc/ControllerPoint.html +0 -116
  112. data/rdoc/CuteA.html +0 -177
  113. data/rdoc/CuteB.html +0 -178
  114. data/rdoc/DSLSetup.html +0 -177
  115. data/rdoc/GameTestWindow.html +0 -242
  116. data/rdoc/GameWindow.html +0 -292
  117. data/rdoc/Gemfile.html +0 -215
  118. data/rdoc/Gemfile_lock.html +0 -327
  119. data/rdoc/GraphTest.html +0 -210
  120. data/rdoc/Guardfile.html +0 -198
  121. data/rdoc/InvertedPendulum.html +0 -198
  122. data/rdoc/InvertedPendulum/Cart.html +0 -668
  123. data/rdoc/InvertedPendulum/DSL.html +0 -259
  124. data/rdoc/InvertedPendulum/InvPendWindow.html +0 -402
  125. data/rdoc/Logger.html +0 -98
  126. data/rdoc/NEAT.html +0 -422
  127. data/rdoc/NEAT/BasicNeuronTypes.html +0 -107
  128. data/rdoc/NEAT/BasicNeuronTypes/BiasNeuron.html +0 -265
  129. data/rdoc/NEAT/BasicNeuronTypes/CosineNeuron.html +0 -162
  130. data/rdoc/NEAT/BasicNeuronTypes/InputNeuron.html +0 -206
  131. data/rdoc/NEAT/BasicNeuronTypes/SigmoidNeuron.html +0 -162
  132. data/rdoc/NEAT/BasicNeuronTypes/SineNeuron.html +0 -162
  133. data/rdoc/NEAT/BasicNeuronTypes/TanhNeuron.html +0 -161
  134. data/rdoc/NEAT/Controller.html +0 -729
  135. data/rdoc/NEAT/Controller/NeatSettings.html +0 -880
  136. data/rdoc/NEAT/Critter.html +0 -489
  137. data/rdoc/NEAT/Critter/Genotype.html +0 -735
  138. data/rdoc/NEAT/Critter/Genotype/Gene.html +0 -457
  139. data/rdoc/NEAT/Critter/Phenotype.html +0 -330
  140. data/rdoc/NEAT/DSL.html +0 -729
  141. data/rdoc/NEAT/Evaluator.html +0 -256
  142. data/rdoc/NEAT/Evolver.html +0 -891
  143. data/rdoc/NEAT/Evolver/CritterOp.html +0 -349
  144. data/rdoc/NEAT/Expressor.html +0 -402
  145. data/rdoc/NEAT/Graph.html +0 -263
  146. data/rdoc/NEAT/Graph/DependencyResolver.html +0 -291
  147. data/rdoc/NEAT/Graph/GraphException.html +0 -105
  148. data/rdoc/NEAT/NeatException.html +0 -105
  149. data/rdoc/NEAT/NeatOb.html +0 -325
  150. data/rdoc/NEAT/Neuron.html +0 -481
  151. data/rdoc/NEAT/Operator.html +0 -109
  152. data/rdoc/NEAT/Population.html +0 -935
  153. data/rdoc/NEAT/Trait.html +0 -117
  154. data/rdoc/Object.html +0 -384
  155. data/rdoc/Phi.html +0 -98
  156. data/rdoc/Player.html +0 -383
  157. data/rdoc/Rakefile.html +0 -254
  158. data/rdoc/RubyNEAT.html +0 -98
  159. data/rdoc/RubyNEAT/Application.html +0 -105
  160. data/rdoc/SDL.html +0 -98
  161. data/rdoc/SDL/Event2.html +0 -98
  162. data/rdoc/Vector.html +0 -195
  163. data/rdoc/created.rid +0 -125
  164. data/rdoc/doc/ControllerPoint_html.html +0 -299
  165. data/rdoc/doc/CuteA_html.html +0 -438
  166. data/rdoc/doc/CuteB_html.html +0 -436
  167. data/rdoc/doc/DSL_html.html +0 -992
  168. data/rdoc/doc/NEAT/BasicNeuronTypes/BiasNeuron_html.html +0 -617
  169. data/rdoc/doc/NEAT/BasicNeuronTypes/CosineNeuron_html.html +0 -413
  170. data/rdoc/doc/NEAT/BasicNeuronTypes/InputNeuron_html.html +0 -498
  171. data/rdoc/doc/NEAT/BasicNeuronTypes/SigmoidNeuron_html.html +0 -413
  172. data/rdoc/doc/NEAT/BasicNeuronTypes/SineNeuron_html.html +0 -413
  173. data/rdoc/doc/NEAT/BasicNeuronTypes/TanhNeuron_html.html +0 -412
  174. data/rdoc/doc/NEAT/BasicNeuronTypes_html.html +0 -310
  175. data/rdoc/doc/NEAT/Controller/NeatSettings_html.html +0 -3324
  176. data/rdoc/doc/NEAT/Controller_html.html +0 -2212
  177. data/rdoc/doc/NEAT/Critter/Genotype/Gene_html.html +0 -997
  178. data/rdoc/doc/NEAT/Critter/Genotype_html.html +0 -1556
  179. data/rdoc/doc/NEAT/Critter/Phenotype_html.html +0 -687
  180. data/rdoc/doc/NEAT/Critter_html.html +0 -1037
  181. data/rdoc/doc/NEAT/DSL_html.html +0 -1349
  182. data/rdoc/doc/NEAT/Evaluator_html.html +0 -556
  183. data/rdoc/doc/NEAT/Evolver/CritterOp_html.html +0 -690
  184. data/rdoc/doc/NEAT/Evolver_html.html +0 -677
  185. data/rdoc/doc/NEAT/Expressor_html.html +0 -468
  186. data/rdoc/doc/NEAT/Graph/DependencyResolver_html.html +0 -598
  187. data/rdoc/doc/NEAT/Graph/GraphException_html.html +0 -299
  188. data/rdoc/doc/NEAT/Graph_html.html +0 -527
  189. data/rdoc/doc/NEAT/NeatException_html.html +0 -299
  190. data/rdoc/doc/NEAT/NeatOb_html.html +0 -671
  191. data/rdoc/doc/NEAT/Neuron_html.html +0 -1095
  192. data/rdoc/doc/NEAT/Operator_html.html +0 -337
  193. data/rdoc/doc/NEAT/Population_html.html +0 -1795
  194. data/rdoc/doc/NEAT/Trait_html.html +0 -344
  195. data/rdoc/doc/NEAT_html.html +0 -736
  196. data/rdoc/doc/_index_html.html +0 -559
  197. data/rdoc/doc/class_list_html.html +0 -369
  198. data/rdoc/doc/css/common_css.html +0 -188
  199. data/rdoc/doc/css/full_list_css.html +0 -243
  200. data/rdoc/doc/css/style_css.html +0 -530
  201. data/rdoc/doc/file_list_html.html +0 -240
  202. data/rdoc/doc/frames_html.html +0 -217
  203. data/rdoc/doc/index_html.html +0 -559
  204. data/rdoc/doc/js/app_js.html +0 -423
  205. data/rdoc/doc/js/full_list_js.html +0 -372
  206. data/rdoc/doc/js/jquery_js.html +0 -1536
  207. data/rdoc/doc/method_list_html.html +0 -1375
  208. data/rdoc/doc/top-level-namespace_html.html +0 -317
  209. data/rdoc/fonts.css +0 -167
  210. data/rdoc/fonts/Lato-Light.ttf +0 -0
  211. data/rdoc/fonts/Lato-LightItalic.ttf +0 -0
  212. data/rdoc/fonts/Lato-Regular.ttf +0 -0
  213. data/rdoc/fonts/Lato-RegularItalic.ttf +0 -0
  214. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  215. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  216. data/rdoc/images/add.png +0 -0
  217. data/rdoc/images/arrow_up.png +0 -0
  218. data/rdoc/images/brick.png +0 -0
  219. data/rdoc/images/brick_link.png +0 -0
  220. data/rdoc/images/bug.png +0 -0
  221. data/rdoc/images/bullet_black.png +0 -0
  222. data/rdoc/images/bullet_toggle_minus.png +0 -0
  223. data/rdoc/images/bullet_toggle_plus.png +0 -0
  224. data/rdoc/images/date.png +0 -0
  225. data/rdoc/images/delete.png +0 -0
  226. data/rdoc/images/find.png +0 -0
  227. data/rdoc/images/loadingAnimation.gif +0 -0
  228. data/rdoc/images/macFFBgHack.png +0 -0
  229. data/rdoc/images/package.png +0 -0
  230. data/rdoc/images/page_green.png +0 -0
  231. data/rdoc/images/page_white_text.png +0 -0
  232. data/rdoc/images/page_white_width.png +0 -0
  233. data/rdoc/images/plugin.png +0 -0
  234. data/rdoc/images/ruby.png +0 -0
  235. data/rdoc/images/tag_blue.png +0 -0
  236. data/rdoc/images/tag_green.png +0 -0
  237. data/rdoc/images/transparent.png +0 -0
  238. data/rdoc/images/wrench.png +0 -0
  239. data/rdoc/images/wrench_orange.png +0 -0
  240. data/rdoc/images/zoom.png +0 -0
  241. data/rdoc/index.html +0 -282
  242. data/rdoc/js/darkfish.js +0 -140
  243. data/rdoc/js/jquery.js +0 -18
  244. data/rdoc/js/navigation.js +0 -142
  245. data/rdoc/js/search.js +0 -109
  246. data/rdoc/js/search_index.js +0 -1
  247. data/rdoc/js/searcher.js +0 -228
  248. data/rdoc/rdoc.css +0 -580
  249. data/rdoc/rubyneat_gemspec.html +0 -387
  250. data/rdoc/table_of_contents.html +0 -2502
  251. data/rdoc/xordebug_log.html +0 -170598
  252. data/rdoc/xorsin_log.html +0 -22569
@@ -1,668 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class InvertedPendulum::Cart - rubyneat 0.3.4</title>
8
-
9
- <link href="../fonts.css" rel="stylesheet">
10
- <link href="../rdoc.css" rel="stylesheet">
11
-
12
- <script type="text/javascript">
13
- var rdoc_rel_prefix = "../";
14
- </script>
15
-
16
- <script src="../js/jquery.js"></script>
17
- <script src="../js/navigation.js"></script>
18
- <script src="../js/search_index.js"></script>
19
- <script src="../js/search.js"></script>
20
- <script src="../js/searcher.js"></script>
21
- <script src="../js/darkfish.js"></script>
22
-
23
-
24
- <body id="top" role="document" class="class">
25
- <nav role="navigation">
26
- <div id="project-navigation">
27
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
28
- <h2>
29
- <a href="../index.html" rel="home">Home</a>
30
- </h2>
31
-
32
- <div id="table-of-contents-navigation">
33
- <a href="../table_of_contents.html#pages">Pages</a>
34
- <a href="../table_of_contents.html#classes">Classes</a>
35
- <a href="../table_of_contents.html#methods">Methods</a>
36
- </div>
37
- </div>
38
-
39
- <div id="search-section" role="search" class="project-section initially-hidden">
40
- <form action="#" method="get" accept-charset="utf-8">
41
- <div id="search-field-wrapper">
42
- <input id="search-field" role="combobox" aria-label="Search"
43
- aria-autocomplete="list" aria-controls="search-results"
44
- type="text" name="search" placeholder="Search" spellcheck="false"
45
- title="Type to search, Up and Down to navigate, Enter to load">
46
- </div>
47
-
48
- <ul id="search-results" aria-label="Search Results"
49
- aria-busy="false" aria-expanded="false"
50
- aria-atomic="false" class="initially-hidden"></ul>
51
- </form>
52
- </div>
53
-
54
- </div>
55
-
56
-
57
-
58
- <div id="class-metadata">
59
-
60
- <div id="parent-class-section" class="nav-section">
61
- <h3>Parent</h3>
62
-
63
-
64
- <p class="link"><a href="../Object.html">Object</a>
65
-
66
- </div>
67
-
68
-
69
-
70
- <!-- Method Quickref -->
71
- <div id="method-list-section" class="nav-section">
72
- <h3>Methods</h3>
73
-
74
- <ul class="link-list" role="directory">
75
-
76
- <li ><a href="#method-c-new">::new</a>
77
-
78
- <li ><a href="#method-i-big_bang">#big_bang</a>
79
-
80
- <li ><a href="#method-i-button_down">#button_down</a>
81
-
82
- <li ><a href="#method-i-button_up">#button_up</a>
83
-
84
- <li ><a href="#method-i-draw">#draw</a>
85
-
86
- <li ><a href="#method-i-ipwin-3D">#ipwin=</a>
87
-
88
- <li ><a href="#method-i-update">#update</a>
89
-
90
- <li ><a href="#method-i-update_cart">#update_cart</a>
91
-
92
- </ul>
93
- </div>
94
-
95
- </div>
96
- </nav>
97
-
98
- <main role="main" aria-labelledby="class-InvertedPendulum::Cart">
99
- <h1 id="class-InvertedPendulum::Cart" class="class">
100
- class InvertedPendulum::Cart
101
- </h1>
102
-
103
- <section class="description">
104
-
105
- </section>
106
-
107
-
108
-
109
-
110
- <section id="5Buntitled-5D" class="documentation-section">
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
- <section class="attribute-method-details" class="method-section">
119
- <header>
120
- <h3>Attributes</h3>
121
- </header>
122
-
123
-
124
- <div id="attribute-i-ipwin" class="method-detail">
125
- <div class="method-heading attribute-method-heading">
126
- <span class="method-name">ipwin</span><span
127
- class="attribute-access-type">[RW]</span>
128
- </div>
129
-
130
- <div class="method-description">
131
-
132
-
133
-
134
- </div>
135
- </div>
136
-
137
- <div id="attribute-i-pix_meters" class="method-detail">
138
- <div class="method-heading attribute-method-heading">
139
- <span class="method-name">pix_meters</span><span
140
- class="attribute-access-type">[RW]</span>
141
- </div>
142
-
143
- <div class="method-description">
144
-
145
-
146
-
147
- </div>
148
- </div>
149
-
150
- </section>
151
-
152
-
153
-
154
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
155
- <header>
156
- <h3>Public Class Methods</h3>
157
- </header>
158
-
159
-
160
- <div id="method-c-new" class="method-detail ">
161
-
162
- <div class="method-heading">
163
- <span class="method-name">new</span><span
164
- class="method-args">(ipwin: nil, scale: 0.50, ang: 90.1, xpos: 500.0, ypos: 845.0, cartmass: 200.0, polemass: 100.10, bang: 10.0, thrust_decay: 2.0, window_pix_width: 1280, update_interval: 16.666666, naked: false)</span>
165
-
166
- <span class="method-click-advice">click to toggle source</span>
167
-
168
- </div>
169
-
170
-
171
- <div class="method-description">
172
-
173
- <p>@param ipwin – the windowed canvalss this will be shown. @param scale –
174
- visual scale on the canvas. @param ang – initial angle in degrees, 0
175
- being the</p>
176
-
177
- <pre>positive side of the x axis.</pre>
178
-
179
- <p>@param xpos – initial x position of the center of cart, in pixels. @param
180
- cartmass – in kg. included are the mass of the wheels.</p>
181
-
182
- <pre>We will not deal with the angular momentum
183
- of the wheels, because that&#39;s beyond the scope
184
- of what this is supposed to accomplish.</pre>
185
-
186
- <p>@param polemass – in kg. The mass of the pole is assumed to all</p>
187
-
188
- <pre>reside at a point at
189
- the knobby end.</pre>
190
-
191
- <p>@param bang – per mouse event, how much bang (acceleration in m/s) to</p>
192
-
193
- <pre>deliver to the cart</pre>
194
-
195
-
196
-
197
-
198
- <div class="method-source-code" id="new-source">
199
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 117</span>
200
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">ipwin</span><span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>,
201
- <span class="ruby-identifier">scale</span><span class="ruby-operator">:</span> <span class="ruby-value">0.50</span>,
202
- <span class="ruby-identifier">ang</span><span class="ruby-operator">:</span> <span class="ruby-value">90.1</span>,
203
- <span class="ruby-identifier">xpos</span><span class="ruby-operator">:</span> <span class="ruby-value">500.0</span>,
204
- <span class="ruby-identifier">ypos</span><span class="ruby-operator">:</span> <span class="ruby-value">845.0</span>,
205
- <span class="ruby-identifier">cartmass</span><span class="ruby-operator">:</span> <span class="ruby-value">200.0</span>,
206
- <span class="ruby-identifier">polemass</span><span class="ruby-operator">:</span> <span class="ruby-value">100.10</span>,
207
- <span class="ruby-identifier">bang</span><span class="ruby-operator">:</span> <span class="ruby-value">10.0</span>, <span class="ruby-comment"># acceleration on a bang event</span>
208
- <span class="ruby-identifier">thrust_decay</span><span class="ruby-operator">:</span> <span class="ruby-value">2.0</span>, <span class="ruby-comment"># thrust decay percentage per second</span>
209
- <span class="ruby-identifier">window_pix_width</span><span class="ruby-operator">:</span> <span class="ruby-value">1280</span>,
210
- <span class="ruby-identifier">update_interval</span><span class="ruby-operator">:</span> <span class="ruby-value">16.666666</span>,
211
- <span class="ruby-identifier">naked</span><span class="ruby-operator">:</span> <span class="ruby-keyword">false</span>)
212
- <span class="ruby-ivar">@t</span> = <span class="ruby-value">0</span>
213
- <span class="ruby-ivar">@bang</span> = <span class="ruby-identifier">bang</span>
214
- <span class="ruby-ivar">@thrust</span> = <span class="ruby-value">0</span> <span class="ruby-comment"># accumulated bang</span>
215
- <span class="ruby-ivar">@thrust_decay</span> = <span class="ruby-identifier">thrust_decay</span>
216
- <span class="ruby-ivar">@scale</span> = <span class="ruby-identifier">scale</span>
217
- <span class="ruby-ivar">@cart_length</span> = <span class="ruby-value">5.0</span> <span class="ruby-comment"># meters</span>
218
- <span class="ruby-ivar">@pix_meters</span> = <span class="ruby-value">640.0</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">scale</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@cart_length</span>
219
- <span class="ruby-ivar">@ipwin</span> = <span class="ruby-identifier">ipwin</span>
220
- <span class="ruby-ivar">@pix_width</span> = <span class="ruby-ivar">@ipwin</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">window_pix_width</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@ipwin</span>.<span class="ruby-identifier">pix_width</span>
221
- <span class="ruby-ivar">@update_interval</span> = <span class="ruby-identifier">ipwin</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">update_interval</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@ipwin</span>.<span class="ruby-identifier">update_interval</span>
222
- <span class="ruby-ivar">@cart</span> = {
223
- <span class="ruby-identifier">pos</span><span class="ruby-operator">:</span> <span class="ruby-constant">Vector</span>[<span class="ruby-identifier">xpos</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@pix_meters</span>, <span class="ruby-identifier">ypos</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@pix_meters</span>, <span class="ruby-value">0</span>],
224
- <span class="ruby-identifier">vel</span><span class="ruby-operator">:</span> <span class="ruby-constant">Vector</span>[<span class="ruby-value">0.0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>], <span class="ruby-comment">#speed in meters per second</span>
225
- <span class="ruby-identifier">acc</span><span class="ruby-operator">:</span> <span class="ruby-constant">Vector</span>[<span class="ruby-value">0.0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>], <span class="ruby-comment">#acceleration in meters per second squared</span>
226
- <span class="ruby-identifier">scale</span><span class="ruby-operator">:</span> <span class="ruby-value">0.2</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">scale</span>,
227
- <span class="ruby-identifier">length</span><span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>, <span class="ruby-comment"># in meters, calculated from the scaled pixel length.</span>
228
- <span class="ruby-identifier">height</span><span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>, <span class="ruby-comment"># in meters, calculated from the scaled pixel height</span>
229
- <span class="ruby-identifier">basis</span><span class="ruby-operator">:</span> {
230
- <span class="ruby-identifier">horiz</span><span class="ruby-operator">:</span> <span class="ruby-constant">Vector</span>[<span class="ruby-value">1.0</span>, <span class="ruby-value">0.0</span>, <span class="ruby-value">0.0</span>], <span class="ruby-comment"># The cart is resticted to movement on the x axis</span>
231
- <span class="ruby-identifier">vert</span><span class="ruby-operator">:</span> <span class="ruby-constant">Vector</span>[<span class="ruby-value">0.0</span>, <span class="ruby-value">1.0</span>, <span class="ruby-value">0.0</span>]}, <span class="ruby-comment"># so these basis vectors will never change.</span>
232
- <span class="ruby-identifier">force</span><span class="ruby-operator">:</span> {},
233
- <span class="ruby-identifier">mass</span><span class="ruby-operator">:</span> <span class="ruby-identifier">cartmass</span>
234
- }
235
-
236
- <span class="ruby-comment"># Pole is relative to cart, and in the image is laying horizontal.</span>
237
- <span class="ruby-ivar">@pole</span> = {
238
- <span class="ruby-identifier">z</span><span class="ruby-operator">:</span> <span class="ruby-value">0</span>,
239
- <span class="ruby-identifier">xoff</span><span class="ruby-operator">:</span> <span class="ruby-value">0.0</span>,
240
- <span class="ruby-identifier">yoff</span><span class="ruby-operator">:</span> <span class="ruby-value">0.5</span>,
241
- <span class="ruby-identifier">ang</span><span class="ruby-operator">:</span> <span class="ruby-identifier">ang</span>, <span class="ruby-comment"># angle is in degrees</span>
242
- <span class="ruby-identifier">dang</span><span class="ruby-operator">:</span> <span class="ruby-value">0.0</span>, <span class="ruby-comment"># degrees per second</span>
243
- <span class="ruby-identifier">ddang</span><span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>, <span class="ruby-comment"># angular acceleration, degree / second ** 2</span>
244
- <span class="ruby-identifier">cdang</span><span class="ruby-operator">:</span> <span class="ruby-value">0.0</span>, <span class="ruby-comment"># degrees per second, contribution from cart</span>
245
- <span class="ruby-identifier">cddang</span><span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>, <span class="ruby-comment"># angular acceleration, degree / second ** 2, contribution from cart</span>
246
- <span class="ruby-identifier">scale</span><span class="ruby-operator">:</span> <span class="ruby-value">0.2</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">scale</span>,
247
- <span class="ruby-identifier">force</span><span class="ruby-operator">:</span> {}, <span class="ruby-comment"># shall hold the 2 force vectors :shaft and :radial</span>
248
- <span class="ruby-identifier">basis</span><span class="ruby-operator">:</span> {}, <span class="ruby-comment"># basis (unit) vectors</span>
249
- <span class="ruby-identifier">cacc</span><span class="ruby-operator">:</span> <span class="ruby-constant">Vector</span>[<span class="ruby-value">0</span>,<span class="ruby-value">0</span>,<span class="ruby-value">0</span>], <span class="ruby-comment"># acceleration from cart</span>
250
- <span class="ruby-identifier">length</span><span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span>, <span class="ruby-comment"># in meters, calculated from the scaled pixel length.</span>
251
- <span class="ruby-identifier">mass</span><span class="ruby-operator">:</span> <span class="ruby-identifier">polemass</span>
252
- }
253
-
254
- <span class="ruby-comment"># Wheels is relative to cart</span>
255
- <span class="ruby-ivar">@wheels</span> = [
256
- {
257
- <span class="ruby-identifier">ang</span><span class="ruby-operator">:</span> <span class="ruby-value">0</span>,
258
- <span class="ruby-identifier">dang</span><span class="ruby-operator">:</span> <span class="ruby-value">100</span>, <span class="ruby-comment">#FIXME: delete this for this will be overwritten anyway</span>
259
- <span class="ruby-identifier">xoff</span><span class="ruby-operator">:</span> <span class="ruby-value">-0.7</span>, <span class="ruby-comment"># percentage from center</span>
260
- <span class="ruby-identifier">yoff</span><span class="ruby-operator">:</span> <span class="ruby-value">0.4</span>, <span class="ruby-comment"># percentage from center</span>
261
- <span class="ruby-identifier">scale</span><span class="ruby-operator">:</span> <span class="ruby-value">0.2</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">scale</span>
262
- },
263
- {
264
- <span class="ruby-identifier">ang</span><span class="ruby-operator">:</span> <span class="ruby-value">0</span>,
265
- <span class="ruby-identifier">dang</span><span class="ruby-operator">:</span> <span class="ruby-value">12.33</span>, <span class="ruby-comment">#FIXME: delete this for this will be overwritten anyway</span>
266
- <span class="ruby-identifier">xoff</span><span class="ruby-operator">:</span> <span class="ruby-value">0.7</span>,
267
- <span class="ruby-identifier">yoff</span><span class="ruby-operator">:</span> <span class="ruby-value">0.4</span>,
268
- <span class="ruby-identifier">scale</span><span class="ruby-operator">:</span> <span class="ruby-value">0.2</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">scale</span>
269
- }
270
- ]
271
- <span class="ruby-keyword">end</span></pre>
272
- </div>
273
-
274
- </div>
275
-
276
-
277
-
278
-
279
- </div>
280
-
281
-
282
- </section>
283
-
284
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
285
- <header>
286
- <h3>Public Instance Methods</h3>
287
- </header>
288
-
289
-
290
- <div id="method-i-big_bang" class="method-detail ">
291
-
292
- <div class="method-heading">
293
- <span class="method-name">big_bang</span><span
294
- class="method-args">(bb = 0)</span>
295
-
296
- <span class="method-click-advice">click to toggle source</span>
297
-
298
- </div>
299
-
300
-
301
- <div class="method-description">
302
-
303
- <pre>Provide a bang for the cart.
304
- Return a thrust (acc) vector (really just x)
305
- based on thrust</pre>
306
-
307
- <p>@param bb – bang factor, normally -1, 0, or 1, but could be</p>
308
-
309
- <pre>other values based on being a multiplier of the actual bang to be
310
- applied.</pre>
311
-
312
-
313
-
314
-
315
- <div class="method-source-code" id="big_bang-source">
316
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 212</span>
317
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">big_bang</span>(<span class="ruby-identifier">bb</span> = <span class="ruby-value">0</span>)
318
- <span class="ruby-comment"># FIXME: this is temporary. Eventually this will call a callback in the Neater script.</span>
319
- <span class="ruby-identifier">v</span> = <span class="ruby-constant">Vector</span>[<span class="ruby-ivar">@thrust</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>]
320
- <span class="ruby-ivar">@thrust</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@bang</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">bb</span>
321
- <span class="ruby-ivar">@thrust</span> <span class="ruby-operator">-=</span> <span class="ruby-ivar">@thrust</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@thrust_decay</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span>
322
- <span class="ruby-identifier">v</span>
323
- <span class="ruby-keyword">end</span></pre>
324
- </div>
325
-
326
- </div>
327
-
328
-
329
-
330
-
331
- </div>
332
-
333
-
334
- <div id="method-i-button_down" class="method-detail ">
335
-
336
- <div class="method-heading">
337
- <span class="method-name">button_down</span><span
338
- class="method-args">(id)</span>
339
-
340
- <span class="method-click-advice">click to toggle source</span>
341
-
342
- </div>
343
-
344
-
345
- <div class="method-description">
346
-
347
-
348
-
349
-
350
-
351
-
352
- <div class="method-source-code" id="button_down-source">
353
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 220</span>
354
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">button_down</span>(<span class="ruby-identifier">id</span>)
355
- <span class="ruby-identifier">big_bang</span> <span class="ruby-keyword">case</span> <span class="ruby-identifier">id</span>
356
- <span class="ruby-keyword">when</span> <span class="ruby-constant">MOUSE_ROLL_FOREWARD</span>
357
- <span class="ruby-value">1.0</span>
358
- <span class="ruby-keyword">when</span> <span class="ruby-constant">MOUSE_ROLL_BACK</span>
359
- <span class="ruby-value">-1.0</span>
360
- <span class="ruby-keyword">else</span>
361
- <span class="ruby-value">0</span>
362
- <span class="ruby-keyword">end</span>
363
- <span class="ruby-keyword">end</span></pre>
364
- </div>
365
-
366
- </div>
367
-
368
-
369
-
370
-
371
- </div>
372
-
373
-
374
- <div id="method-i-button_up" class="method-detail ">
375
-
376
- <div class="method-heading">
377
- <span class="method-name">button_up</span><span
378
- class="method-args">(id)</span>
379
-
380
- <span class="method-click-advice">click to toggle source</span>
381
-
382
- </div>
383
-
384
-
385
- <div class="method-description">
386
-
387
-
388
-
389
-
390
-
391
-
392
- <div class="method-source-code" id="button_up-source">
393
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 231</span>
394
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">button_up</span>(<span class="ruby-identifier">id</span>)
395
- <span class="ruby-comment"># no op for now.</span>
396
- <span class="ruby-keyword">end</span></pre>
397
- </div>
398
-
399
- </div>
400
-
401
-
402
-
403
-
404
- </div>
405
-
406
-
407
- <div id="method-i-draw" class="method-detail ">
408
-
409
- <div class="method-heading">
410
- <span class="method-name">draw</span><span
411
- class="method-args">()</span>
412
-
413
- <span class="method-click-advice">click to toggle source</span>
414
-
415
- </div>
416
-
417
-
418
- <div class="method-description">
419
-
420
-
421
-
422
-
423
-
424
-
425
- <div class="method-source-code" id="draw-source">
426
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 328</span>
427
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">draw</span>
428
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">draw_rot</span>( <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:_x</span>] <span class="ruby-operator">%</span> <span class="ruby-ivar">@pix_width</span>,
429
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:_y</span>],
430
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:z</span>],
431
- <span class="ruby-operator">-</span><span class="ruby-ivar">@pole</span>[<span class="ruby-value">:ang</span>], <span class="ruby-comment"># negative because y is inverted on the canvas</span>
432
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:xoff</span>], <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:yoff</span>],
433
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:scale</span>],
434
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:scale</span>])
435
-
436
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">draw</span>(<span class="ruby-ivar">@cart</span>[<span class="ruby-value">:_x</span>] <span class="ruby-operator">%</span> <span class="ruby-ivar">@pix_width</span>,
437
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:_y</span>],
438
- <span class="ruby-value">0</span>,
439
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:scale</span>],
440
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:scale</span>])
441
-
442
- <span class="ruby-ivar">@wheels</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">wh</span><span class="ruby-operator">|</span>
443
- <span class="ruby-identifier">wh</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">draw_rot</span>(<span class="ruby-identifier">wh</span>[<span class="ruby-value">:_x</span>] <span class="ruby-operator">%</span> <span class="ruby-ivar">@pix_width</span>,
444
- <span class="ruby-identifier">wh</span>[<span class="ruby-value">:_y</span>],
445
- <span class="ruby-value">0</span>,
446
- <span class="ruby-identifier">wh</span>[<span class="ruby-value">:ang</span>],
447
- <span class="ruby-value">0.5</span>, <span class="ruby-value">0.5</span>,
448
- <span class="ruby-identifier">wh</span>[<span class="ruby-value">:scale</span>],
449
- <span class="ruby-identifier">wh</span>[<span class="ruby-value">:scale</span>])
450
- <span class="ruby-keyword">end</span>
451
- <span class="ruby-keyword">end</span></pre>
452
- </div>
453
-
454
- </div>
455
-
456
-
457
-
458
-
459
- </div>
460
-
461
-
462
- <div id="method-i-ipwin-3D" class="method-detail ">
463
-
464
- <div class="method-heading">
465
- <span class="method-name">ipwin=</span><span
466
- class="method-args">(ipwin)</span>
467
-
468
- <span class="method-click-advice">click to toggle source</span>
469
-
470
- </div>
471
-
472
-
473
- <div class="method-description">
474
-
475
-
476
-
477
-
478
-
479
-
480
- <div class="method-source-code" id="ipwin-3D-source">
481
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 190</span>
482
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">ipwin=</span>(<span class="ruby-identifier">ipwin</span>)
483
- <span class="ruby-ivar">@ipwin</span> = <span class="ruby-identifier">ipwin</span>
484
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:image</span>] = <span class="ruby-constant">Gosu</span><span class="ruby-operator">::</span><span class="ruby-constant">Image</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ipwin</span>, <span class="ruby-string">&#39;public/cart.png&#39;</span>, <span class="ruby-keyword">true</span>)
485
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:image</span>] = <span class="ruby-constant">Gosu</span><span class="ruby-operator">::</span><span class="ruby-constant">Image</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ipwin</span>, <span class="ruby-string">&#39;public/pole.png&#39;</span>, <span class="ruby-keyword">true</span>)
486
- <span class="ruby-ivar">@wheels</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
487
- <span class="ruby-identifier">w</span>[<span class="ruby-value">:image</span>] = <span class="ruby-constant">Gosu</span><span class="ruby-operator">::</span><span class="ruby-constant">Image</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ipwin</span>, <span class="ruby-string">&#39;public/wheel.png&#39;</span>, <span class="ruby-keyword">true</span>)
488
- <span class="ruby-comment"># radius of wheel in meters, need this for rotational velocity calculation</span>
489
- <span class="ruby-identifier">w</span>[<span class="ruby-value">:radius</span>] = <span class="ruby-identifier">w</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">width</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">w</span>[<span class="ruby-value">:scale</span>] <span class="ruby-operator">/</span> <span class="ruby-ivar">@pix_meters</span> <span class="ruby-operator">/</span> <span class="ruby-value">2.0</span>
490
- <span class="ruby-identifier">w</span>[<span class="ruby-value">:circumference</span>] = <span class="ruby-identifier">w</span>[<span class="ruby-value">:radius</span>] <span class="ruby-operator">*</span> <span class="ruby-value">2.0</span> <span class="ruby-operator">*</span> <span class="ruby-constant">PI</span>
491
- }
492
-
493
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:length</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">width</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:scale</span>] <span class="ruby-operator">/</span> <span class="ruby-ivar">@pix_meters</span>
494
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:height</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">height</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:scale</span>] <span class="ruby-operator">/</span> <span class="ruby-ivar">@pix_meters</span>
495
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:length</span>] = <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">width</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:scale</span>] <span class="ruby-operator">/</span> <span class="ruby-ivar">@pix_meters</span>
496
- <span class="ruby-keyword">end</span></pre>
497
- </div>
498
-
499
- </div>
500
-
501
-
502
-
503
-
504
- </div>
505
-
506
-
507
- <div id="method-i-update" class="method-detail ">
508
-
509
- <div class="method-heading">
510
- <span class="method-name">update</span><span
511
- class="method-args">()</span>
512
-
513
- <span class="method-click-advice">click to toggle source</span>
514
-
515
- </div>
516
-
517
-
518
- <div class="method-description">
519
-
520
-
521
-
522
-
523
-
524
-
525
- <div class="method-source-code" id="update-source">
526
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 235</span>
527
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">update</span>
528
- <span class="ruby-comment">## Physics updates</span>
529
- <span class="ruby-ivar">@dt</span> = <span class="ruby-ivar">@update_interval</span> <span class="ruby-operator">/</span> <span class="ruby-value">1000.0</span>
530
- <span class="ruby-ivar">@t</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@dt</span>
531
-
532
- <span class="ruby-comment">## Pole (Pendulum) forces, accelerations, etc.</span>
533
- <span class="ruby-comment"># basis vectors</span>
534
- <span class="ruby-identifier">ang</span> = <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:ang</span>] <span class="ruby-operator">*</span> <span class="ruby-constant">TORAD</span>
535
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:time</span>] = <span class="ruby-ivar">@t</span>
536
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:basis</span>][<span class="ruby-value">:shaft</span>] = <span class="ruby-identifier">iShaft</span> = <span class="ruby-constant">Vector</span>[<span class="ruby-identifier">cos</span>(<span class="ruby-identifier">ang</span>), <span class="ruby-identifier">sin</span>(<span class="ruby-identifier">ang</span>), <span class="ruby-value">0</span>]
537
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:basis</span>][<span class="ruby-value">:radial</span>] = <span class="ruby-identifier">iRadial</span> = <span class="ruby-constant">Vector</span>[<span class="ruby-identifier">sin</span>(<span class="ruby-identifier">ang</span>), <span class="ruby-operator">-</span><span class="ruby-identifier">cos</span>(<span class="ruby-identifier">ang</span>), <span class="ruby-value">0</span>]
538
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:r</span>] = <span class="ruby-identifier">r</span> = <span class="ruby-identifier">iShaft</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:length</span>]
539
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:shaft</span>] = <span class="ruby-identifier">iShaft</span>.<span class="ruby-identifier">basis</span>(<span class="ruby-constant">GV</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:mass</span>])
540
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:radial</span>] = <span class="ruby-identifier">radial</span> = <span class="ruby-identifier">iRadial</span>.<span class="ruby-identifier">basis</span>(<span class="ruby-constant">GV</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:mass</span>])
541
- <span class="ruby-comment"># the magnitude of the radial vector goes to the torque on</span>
542
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:torque</span>] = <span class="ruby-identifier">torque</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">cross_product</span>(<span class="ruby-identifier">radial</span>)
543
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:alpha</span>] = <span class="ruby-identifier">alpha</span> = <span class="ruby-identifier">torque</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@pole</span>[<span class="ruby-value">:mass</span>] <span class="ruby-operator">*</span> (<span class="ruby-ivar">@pole</span>[<span class="ruby-value">:length</span>] <span class="ruby-operator">**</span> <span class="ruby-value">2.0</span>))
544
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:ddang</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">alpha</span>[<span class="ruby-constant">Z</span>] <span class="ruby-operator">/</span> <span class="ruby-constant">TORAD</span> <span class="ruby-comment"># the pseudo vector component Z is the signed magnitude</span>
545
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:dang</span>] <span class="ruby-operator">+=</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:ddang</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span> <span class="ruby-comment"># angular velocity</span>
546
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:vel</span>] = <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:basis</span>][<span class="ruby-value">:radial</span>] <span class="ruby-operator">*</span> (<span class="ruby-ivar">@pole</span>[<span class="ruby-value">:dang</span>] <span class="ruby-operator">*</span> <span class="ruby-constant">TORAD</span> <span class="ruby-operator">*</span> <span class="ruby-constant">PI2</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:length</span>]) <span class="ruby-comment">#linear velocity at the pole mass</span>
547
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:ang</span>] <span class="ruby-operator">+=</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:dang</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span>
548
-
549
- <span class="ruby-comment">## Cart forces from pole [:force][:shaft] and centifugal</span>
550
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:time</span>] = <span class="ruby-ivar">@t</span>
551
-
552
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:centrifugal</span>] = <span class="ruby-identifier">centrifugal</span> = (<span class="ruby-ivar">@pole</span>[<span class="ruby-value">:basis</span>][<span class="ruby-value">:shaft</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:vel</span>].<span class="ruby-identifier">magnitude</span> <span class="ruby-operator">**</span> <span class="ruby-value">2</span>) <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:mass</span>]
553
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:shaft</span>] = <span class="ruby-identifier">shaft</span> = <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:shaft</span>] <span class="ruby-comment"># + centrifugal #FIXME cemtrifugal calculations wonky!</span>
554
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:horiz</span>] = <span class="ruby-identifier">horiz</span> = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:basis</span>][<span class="ruby-value">:horiz</span>].<span class="ruby-identifier">basis</span> <span class="ruby-identifier">shaft</span>
555
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:vert</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:basis</span>][<span class="ruby-value">:vert</span>].<span class="ruby-identifier">basis</span> <span class="ruby-identifier">shaft</span> <span class="ruby-comment"># not that we use the vert</span>
556
-
557
- <span class="ruby-comment"># Now the horz force induces an acceleration on the cart.</span>
558
- <span class="ruby-comment"># Any additions to the acceleration vector must be done after</span>
559
- <span class="ruby-comment"># this point.</span>
560
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:acc</span>] = <span class="ruby-identifier">horiz</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@cart</span>[<span class="ruby-value">:mass</span>] <span class="ruby-operator">+</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:mass</span>] <span class="ruby-operator">*</span> <span class="ruby-identifier">cos</span>(<span class="ruby-identifier">ang</span>).<span class="ruby-identifier">abs</span>)
561
-
562
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:acc</span>] <span class="ruby-operator">+=</span> <span class="ruby-identifier">big_bang</span>
563
-
564
- <span class="ruby-comment">## Cart acceleration also affects angular torque</span>
565
- <span class="ruby-comment"># FIXME: Note that recalculations are being done here, which</span>
566
- <span class="ruby-comment"># FIXME: are not DRY. Redo this properly later.</span>
567
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:cacc</span>] = <span class="ruby-identifier">cacc</span> = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:acc</span>] <span class="ruby-operator">*</span> <span class="ruby-value">-1.0</span>
568
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:cradial</span>] = <span class="ruby-identifier">radial</span> = <span class="ruby-identifier">iRadial</span>.<span class="ruby-identifier">basis</span>(<span class="ruby-identifier">cacc</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:mass</span>])
569
- <span class="ruby-comment"># the magnitude of the radial vector goes to the torque on</span>
570
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:force</span>][<span class="ruby-value">:ctorque</span>] = <span class="ruby-identifier">torque</span> = <span class="ruby-identifier">r</span>.<span class="ruby-identifier">cross_product</span>(<span class="ruby-identifier">radial</span>)
571
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:calpha</span>] = <span class="ruby-identifier">alpha</span> = <span class="ruby-identifier">torque</span> <span class="ruby-operator">/</span> (<span class="ruby-ivar">@pole</span>[<span class="ruby-value">:mass</span>] <span class="ruby-operator">*</span> (<span class="ruby-ivar">@pole</span>[<span class="ruby-value">:length</span>] <span class="ruby-operator">**</span> <span class="ruby-value">2.0</span>))
572
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:cddang</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">alpha</span>[<span class="ruby-constant">Z</span>] <span class="ruby-operator">/</span> <span class="ruby-constant">TORAD</span> <span class="ruby-comment"># the pseudo vector component Z is the signed magnitude</span>
573
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:cdang</span>] <span class="ruby-operator">+=</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:cddang</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span>
574
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:ang</span>] <span class="ruby-operator">+=</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:cdang</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span>
575
-
576
- <span class="ruby-comment">## Actual cart physics</span>
577
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:vel</span>][<span class="ruby-constant">X</span>] <span class="ruby-operator">+=</span> <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:acc</span>][<span class="ruby-constant">X</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span>
578
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:pos</span>][<span class="ruby-constant">X</span>] <span class="ruby-operator">+=</span> <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:vel</span>][<span class="ruby-constant">X</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span>
579
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:x</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:pos</span>][<span class="ruby-constant">X</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@pix_meters</span>
580
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:y</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:pos</span>][<span class="ruby-constant">Y</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@pix_meters</span>
581
-
582
- <span class="ruby-comment">#puts &#39;=&#39; * 80</span>
583
- <span class="ruby-comment">#pp({pole: @pole, cart: @cart})</span>
584
-
585
- <span class="ruby-comment"># wheels physics -- angular velocity of each wheel based</span>
586
- <span class="ruby-comment"># on the linear velocity of the cart.</span>
587
- <span class="ruby-ivar">@wheels</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
588
- <span class="ruby-identifier">w</span>[<span class="ruby-value">:dang</span>] = <span class="ruby-value">360.0</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:vel</span>][<span class="ruby-constant">X</span>] <span class="ruby-operator">/</span> <span class="ruby-identifier">w</span>[<span class="ruby-value">:circumference</span>]
589
- <span class="ruby-identifier">w</span>[<span class="ruby-value">:ang</span>] <span class="ruby-operator">+=</span> <span class="ruby-identifier">w</span>[<span class="ruby-value">:dang</span>] <span class="ruby-operator">*</span> <span class="ruby-ivar">@dt</span>
590
- <span class="ruby-keyword">end</span>
591
-
592
- <span class="ruby-comment"># model update</span>
593
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">update_cart</span>
594
- <span class="ruby-keyword">end</span></pre>
595
- </div>
596
-
597
- </div>
598
-
599
-
600
-
601
-
602
- </div>
603
-
604
-
605
- <div id="method-i-update_cart" class="method-detail ">
606
-
607
- <div class="method-heading">
608
- <span class="method-name">update_cart</span><span
609
- class="method-args">()</span>
610
-
611
- <span class="method-click-advice">click to toggle source</span>
612
-
613
- </div>
614
-
615
-
616
- <div class="method-description">
617
-
618
- <p>update the positions of all the compnents of the cart in terms of the
619
- relative positional relationships</p>
620
-
621
-
622
-
623
-
624
- <div class="method-source-code" id="update_cart-source">
625
- <pre><span class="ruby-comment"># File neater/rnlib/inverted_pendulum.rb, line 306</span>
626
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">update_cart</span>
627
- <span class="ruby-comment"># center of cart is taken as (x, y), actual is (_x, _y)</span>
628
- <span class="ruby-identifier">pw</span> = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">width</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:scale</span>]
629
- <span class="ruby-identifier">ph</span> = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">height</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:scale</span>]
630
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:_x</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:x</span>] <span class="ruby-operator">-</span> <span class="ruby-identifier">pw</span> <span class="ruby-operator">/</span> <span class="ruby-value">2.0</span>
631
- <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:_y</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:y</span>] <span class="ruby-operator">-</span> <span class="ruby-identifier">ph</span> <span class="ruby-operator">/</span> <span class="ruby-value">2.0</span>
632
-
633
- <span class="ruby-comment"># Wheels in their respective places</span>
634
- <span class="ruby-ivar">@wheels</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">wl</span><span class="ruby-operator">|</span>
635
- <span class="ruby-comment">#ww = wl[:image].width * wl[:scale]</span>
636
- <span class="ruby-comment">#wh = wl[:image].height * wl[:scale]</span>
637
- <span class="ruby-identifier">wl</span>[<span class="ruby-value">:_x</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:x</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">wl</span>[<span class="ruby-value">:xoff</span>] <span class="ruby-operator">*</span> <span class="ruby-identifier">pw</span> <span class="ruby-operator">/</span> <span class="ruby-value">2.0</span>
638
- <span class="ruby-identifier">wl</span>[<span class="ruby-value">:_y</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:y</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">wl</span>[<span class="ruby-value">:yoff</span>] <span class="ruby-operator">*</span> <span class="ruby-identifier">ph</span> <span class="ruby-operator">/</span> <span class="ruby-value">2.0</span>
639
- <span class="ruby-keyword">end</span>
640
-
641
- <span class="ruby-comment"># Pendulum</span>
642
- <span class="ruby-identifier">polew</span> = <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">width</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:scale</span>]
643
- <span class="ruby-identifier">poleh</span> = <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:image</span>].<span class="ruby-identifier">height</span> <span class="ruby-operator">*</span> <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:scale</span>]
644
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:_x</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:x</span>]
645
- <span class="ruby-ivar">@pole</span>[<span class="ruby-value">:_y</span>] = <span class="ruby-ivar">@cart</span>[<span class="ruby-value">:y</span>]
646
- <span class="ruby-keyword">end</span></pre>
647
- </div>
648
-
649
- </div>
650
-
651
-
652
-
653
-
654
- </div>
655
-
656
-
657
- </section>
658
-
659
- </section>
660
- </main>
661
-
662
-
663
- <footer id="validator-badges" role="contentinfo">
664
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
665
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
666
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
667
- </footer>
668
-