forked from BruceSherwood/glowscript
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathStonehenge.html
205 lines (184 loc) · 24 KB
/
Stonehenge.html
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<div id="glowscript" class="glowscript">
<link type="text/css" href="https://s3.amazonaws.com/glowscript/css/redmond/2.1/jquery-ui.custom.css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet" type="text/css" />
<link type="text/css" href="https://s3.amazonaws.com/glowscript/css/ide.css" rel="stylesheet" />
<script type="text/javascript" src="https://s3.amazonaws.com/glowscript/lib/jquery/2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://s3.amazonaws.com/glowscript/lib/jquery/2.1/jquery-ui.custom.min.js"></script>
<script type="text/javascript" src="package/glow.2.6.min.js"></script>
<script type="text/javascript" src="package/RSrun.2.6.min.js"></script>
<script type="text/javascript"><!--//--><![CDATA[//><!--
;(function() {fontloading();
var __rt=srequire('streamline/lib/callbacks/runtime').runtime(__filename, false),__func=__rt.__func,__cb=__rt.__cb; var RS_modules = {};
var roam;
RS_modules.pythonize = {};
(function() {
function strings() {
var string_funcs, exclude, name;
string_funcs = set("capitalize strip lstrip rstrip islower isupper isspace lower upper swapcase center count endswith startswith find rfind index rindex format join ljust rjust partition rpartition replace split rsplit splitlines zfill".split(" "));
if (!arguments.length) {
exclude = (function() {
var s = RS_set();
s.jsset.add("split");
s.jsset.add("replace");
return s;
})(); }
else if (arguments[0]) {
exclude = Array.prototype.slice.call(arguments); }
else {
exclude = null; } ;
if (exclude) {
string_funcs = string_funcs.difference(set(exclude)); } ;
var RS_Iter0 = RS_Iterable(string_funcs);
for (var RS_Index0 = 0; (RS_Index0 < RS_Iter0.length); RS_Index0++) {
name = RS_Iter0[RS_Index0];
(RS_expr_temp = String.prototype)[((((typeof name === "number") && (name < 0))) ? RS_expr_temp.length["+"](name) : name)] = (RS_expr_temp = RS_str.prototype)[((((typeof name === "number") && (name < 0))) ? RS_expr_temp.length["+"](name) : name)]; }; }; RS_modules.pythonize.strings = strings;
})();
function main(_) { var version, box, sphere, cylinder, pyramid, cone, helix, ellipsoid, ring, arrow, compound, graph, display, vector, print, arange, scene, RS_ls, s, ycenter, grey, Nslabs, R, w, d, h, photocenter, floor, pole, theta, c, xc, zc, slab, T, i, entry, B, gh, ga, gr, rgear, tgear, support, gear1, gear2, clock, Nwires, L, smoke, Nrings, RS_unpack, x0, y0, z0, r0, spacing, thick, dr, dthick, gray, y, dy, top, rlog, wide, zpos, zface, tlogend, v0, v, omega, dt, tstop, logcyl, leftstop, rightstop, y1, y2, rball, Dband, vball0, vball, ballangle, ball, cc, nn, table, tabletop, rspring, Lspring, Lspring0, hmass, post, spring, mass, kspring, deltat, Rcloud, omegacloud, cloud, rhairs, dhairs, maxcosine, haircolor, roam, hue, dhue, gangle, ray, newray, angle, F, strings, RS_Index2, RS_Index3, RS_Index4, RS_Index5, RS_Index6, __this = this;
function hourminute() {
var RS_ls, d, hour, minute;
"26";
d = new Date;
"27";
hour = d.getHours()["%"](12);
"28";
minute = d.getMinutes();
"29";
return RS_list_decorate([hour,minute,]); }; function analog_clock() {
if ((this.RS_object_id === undefined)) { Object.defineProperty(this, "RS_object_id", { value: ++RS_object_counter }); };
analog_clock.prototype.__init__.apply(this, arguments); }; function setroam(evt) {
var RS_ls;
"224";
"225";
roam = !roam; }; var __frame = { name: "main", line: 33 }; return __func(_, this, arguments, main, 0, __frame, function __$main() { version = RS_list_decorate(["2.6","glowscript",]); Array.prototype["+"] = function(r) { return this.concat(r); }; window.__GSlang = "vpython"; box = vp_box; sphere = vp_sphere; cylinder = vp_cylinder; pyramid = vp_pyramid; cone = vp_cone; helix = vp_helix; ellipsoid = vp_ellipsoid; ring = vp_ring; arrow = vp_arrow; compound = vp_compound; graph = vp_graph; display = canvas; vector = vec; print = GSprint; arange = range; scene = canvas(); return waitforfonts(__cb(_, __frame, 21, 4, function __$main() { strings = RS_modules.pythonize.strings; strings(); "9"; s = "<b>Fly through the scene:<\/b><br>"; "10"; s += " drag the mouse or your finger above or below the center of the scene to move forward or backward;<br>"; "11"; s += " drag the mouse or your finger right or left to turn your direction of motion.<br>"; "12"; s += "(Normal GlowScript rotate and zoom are turned off in this program.)"; "13"; scene.caption = s; "15"; ycenter = 2; "16"; scene.width = 800; "17"; scene.height = 400; "18"; scene.range = 12; "19"; scene.center = vector(0, ycenter, 0); "20"; scene.userspin = false; "21"; scene.userzoom = false; "22"; scene.background = color.gray(0.5); "23"; scene.ambient = color.gray(0.4); "25"; "31"; analog_clock.prototype.__init__ = function __init__(pos, radius, axis) { var self = this; var RS_ls, sp, n; "33"; self.pos = pos; "34"; self.axis = axis; "35"; self.radius = radius; "36"; self.spheres = RS_list_decorate([]); "37"; self.hour = 0; "38"; self.minute = 1["-u"](); "39"; for (var RS_Index1 = 0; (RS_Index1 < 12); RS_Index1++) { n = RS_Index1; "40"; sp = RS_interpolate_kwargs.call(this, sphere, [RS_desugar_kwargs({ pos: pos["+"](RS_interpolate_kwargs.call(radius["*"](scene.up), (radius["*"](scene.up)).rotate, [RS_desugar_kwargs({ angle: 2["-u"]()["*"](pi)["*"](n)["/"](12), axis: axis }),])), size: 2["*"](radius)["/"](20)["*"](vector(1, 1, 1)), color: color.hsv_to_rgb(vector(n["/"](12), 1, 1)) }),]); "43"; self.spheres.append(sp); }; "44"; self.hand = RS_interpolate_kwargs.call(this, arrow, [RS_desugar_kwargs({ pos: self.pos, axis: 0.95["*"](radius)["*"](scene.up), shaftwidth: radius["/"](10), color: color.cyan }),]); "46"; self.update(); }; if (!analog_clock.prototype.__init__.__argnames__) { Object.defineProperties(analog_clock.prototype.__init__, { __argnames__: { value: ["pos","radius","axis",] } }); } ; analog_clock.__argnames__ = analog_clock.prototype.__init__.__argnames__; analog_clock.__handles_kwarg_interpolation__ = analog_clock.prototype.__init__.__handles_kwarg_interpolation__; analog_clock.prototype.update = function update() { var self = this; var RS_ls, RS_unpack, hour, minute; "49"; RS_unpack = hourminute(); RS_unpack = RS_unpack_asarray(2, RS_unpack); hour = RS_unpack[0]; minute = RS_unpack[1]; "50"; hour = hour["%"](12); "51"; if (((((self.hour === hour) || ((typeof self.hour === "object") && RS_equals(self.hour, hour)))) && (((self.minute === minute) || ((typeof self.minute === "object") && RS_equals(self.minute, minute)))))) { return; } ; "52"; self.hand.axis = RS_interpolate_kwargs.call(0.95["*"](self.radius)["*"](scene.up), (0.95["*"](self.radius)["*"](scene.up)).rotate, [RS_desugar_kwargs({ axis: vector(0, 0, 1), angle: 2["-u"]()["*"](pi)["*"](minute)["/"](60) }),]); "54"; (RS_expr_temp = self.spheres)[RS_bound_index(self.hour, RS_expr_temp)].size = 2["*"](self.radius)["/"](20)["*"](vector(1, 1, 1)); "55"; (RS_expr_temp = self.spheres)[((((typeof hour === "number") && (hour < 0))) ? RS_expr_temp.length["+"](hour) : hour)].size = 2["*"](self.radius)["/"](10)["*"](vector(1, 1, 1)); "56"; self.hour = hour; "57"; self.minute = minute; }; if (!analog_clock.prototype.update.__argnames__) { Object.defineProperties(analog_clock.prototype.update, { __argnames__: { value: [] } }); } ; analog_clock.prototype.__repr__ = function __repr__() { return "<"["+"](__name__)["+"](".")["+"](this.constructor.name)["+"](" #")["+"](this.RS_object_id)["+"](">"); }; analog_clock.prototype.__str__ = function __str__() { return this.__repr_; }; Object.defineProperty(analog_clock.prototype, "__bases__", { value: [] }); analog_clock.prototype.RS_ls = "32"; analog_clock.prototype.RS_ls = "48"; "59"; grey = color.gray(0.8); "60"; Nslabs = 8; "61"; R = 10; "62"; w = 5; "63"; d = 0.5; "64"; h = 5; "65"; photocenter = 0.15["*"](w); "68"; floor = RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(0, 0.1["-u"](), 0), size: vector(0.2, 24, 24), axis: vector(0, 1, 0), texture: textures.wood }),]); "69"; pole = RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: vector(0, 0, 0), axis: vector(0, 1, 0), size: vector(h, 0.4, 0.4), color: color.red }),]); "70"; RS_interpolate_kwargs.call(__this, sphere, [RS_desugar_kwargs({ pos: vector(0, h, 0), size: vector(1, 1, 1), color: color.red }),]); "73"; for (RS_Index2 = 0; (RS_Index2 < Nslabs); RS_Index2++) { i = RS_Index2; "74"; theta = i["*"](2)["*"](pi)["/"](Nslabs); "75"; c = cos(theta); "76"; s = sin(theta); "77"; xc = R["*"](c); "78"; zc = R["*"](s); "79"; if ((((i === 2) || ((typeof i === "object") && RS_equals(i, 2))))) { "80"; RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(3["-u"]()["*"](w)["/"](8), 0.75["*"](h)["/"](2), R), size: vector(0.5["*"](w)["/"](2), 0.75["*"](h), d), color: grey }),]); "82"; RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(3["*"](w)["/"](8), 0.75["*"](h)["/"](2), R), size: vector(0.5["*"](w)["/"](2), 0.75["*"](h), d), color: grey }),]); "84"; RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(0, 0.85["*"](h), R), size: vector(w, 0.3["*"](h), d), color: grey }),]); "86"; } else { "87"; slab = RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(R["*"](c), h["/"](2), R["*"](s)), axis: vector(c, 0, s), size: vector(d, h, w), color: grey }),]); "89"; if ((((i !== 6) && (((typeof i !== "object") || RS_not_equals(i, 6)))))) { "90"; T = textures.flower; "91"; if (((((i === 7) || ((typeof i === "object") && RS_equals(i, 7)))) || (((i === 4) || ((typeof i === "object") && RS_equals(i, 4)))))) { T = textures.rug; } ; "92"; RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: slab.pos, size: vec(1.1["*"](d), 0.9["*"](4)["*"](photocenter), 0.9["*"](4)["*"](photocenter)), axis: vec(c, 0, s), texture: T }),]); } ; } ; }; "96"; entry = RS_interpolate_kwargs.call(__this, text, [RS_desugar_kwargs({ pos: vector(0, 4.4, R["+"](d["/"](2))), text: "Surreal\nStonehenge", align: "center", depth: 0.3, height: 0.5 }),]); "99"; B = RS_interpolate_kwargs.call(__this, text, [RS_desugar_kwargs({ pos: vector(0.4["*"](R), 0, 1["-u"]()["*"](R)), text: "B", height: 2, align: "center", font: "serif", color: color.magenta, depth: 1 }),]); "102"; gh = 1; "103"; ga = 1; "104"; gr = 0.05; "105"; rgear = 0.7; "106"; tgear = ga["/"](5); "107"; support = RS_interpolate_kwargs.call(__this, extrusion, [RS_desugar_kwargs({ pos: vector(7, gh["/"](2), 10), path: RS_list_decorate([vector(0, 0, 0),vector(0, gh, 0),vector(0, gh, ga),vector(0, 0, ga),]), shape: RS_interpolate_kwargs.call(shapes, shapes.circle, [RS_desugar_kwargs({ radius: gr }),]), color: vector(1, 0.7, 0) }),]); "109"; RS_interpolate_kwargs.call(support, support.clone, [RS_desugar_kwargs({ pos: vector(7["+"](2["*"](rgear)), gh["/"](2), 10) }),]); "110"; gear1 = RS_interpolate_kwargs.call(__this, extrusion, [RS_desugar_kwargs({ pos: support.pos["+"](vector(0, gh["/"](2), 0)), path: RS_list_decorate([vector(0, 0, tgear["-u"]()["/"](2)),vector(0, 0, tgear["/"](2)),]), shape: RS_interpolate_kwargs.call(shapes, shapes.gear, [RS_desugar_kwargs({ radius: rgear }),]), color: color.gray(0.85), texture: textures.metal }),]); "112"; gear2 = RS_interpolate_kwargs.call(gear1, gear1.clone, [RS_desugar_kwargs({ pos: gear1.pos["+"](vector(2["*"](rgear), 0, 0)) }),]); "113"; RS_interpolate_kwargs.call(gear1, gear1.rotate, [RS_desugar_kwargs({ angle: 0.4["-u"]()["*"](2)["*"](pi)["/"](20), axis: vector(0, 0, 1) }),]); "116"; RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(0, h["/"](2), R["-u"]()["+"](d["/"](2))["+"](0.1)), size: vector(w["/"](2), w["/"](2), 0.2), texture: textures.wood }),]); "117"; clock = new analog_clock(vector(0, h["/"](2), R["-u"]()["+"](d["/"](2))["+"](0.2)["+"](0.2["*"](h)["/"](10))), 0.2["*"](w), vector(0, 0, 1)); "120"; Nwires = 32; "121"; for (RS_Index3 = 0; (RS_Index3 < Nwires); RS_Index3++) { i = RS_Index3; "122"; theta = i["*"](2)["*"](pi)["/"](Nwires); "123"; L = vector(R["*"](cos(theta)), h["-u"]()["-"](0.1), R["*"](sin(theta))); "124"; RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: vector(0, h, 0), axis: L, size: vector(mag(L), 0.04, 0.04), color: vector(1, 0.7, 0) }),]); }; "127"; RS_interpolate_kwargs.call(__this, pyramid, [RS_desugar_kwargs({ pos: vector(4["-u"](), 0, 5["-u"]()), size: vector(2, 2, 2), axis: vector(0, 3, 0), color: vector(0, 0.5, 0), texture: textures.rough }),]); "130"; smoke = RS_list_decorate([]); "131"; Nrings = 20; "132"; RS_unpack = [5["-u"](),1.5,2["-u"](),]; x0 = RS_unpack[0]; y0 = RS_unpack[1]; z0 = RS_unpack[2]; "133"; r0 = 0.075; "134"; spacing = 0.2; "135"; thick = r0["/"](3); "136"; dr = 0.0075; "137"; dthick = thick["/"](Nrings); "138"; gray = 1; "139"; RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: vector(x0, 0, z0), axis: vector(0, y0["+"](r0), 0), radius: 1.5["*"](r0["+"](thick)), color: color.black }),]); "142"; for (RS_Index4 = 0; (RS_Index4 < Nrings); RS_Index4++) { i = RS_Index4; "143"; smoke.append(RS_interpolate_kwargs.call(__this, ring, [RS_desugar_kwargs({ pos: vector(x0, y0["+"](spacing["*"](i)), z0), axis: vector(0, 1, 0), radius: r0["+"](dr["*"](i)), thickness: thick["-"](dthick["*"](i)) }),])); }; "145"; y = 0; "146"; dy = spacing["/"](20); "147"; top = Nrings["-"](1); "150"; rlog = 1; "151"; wide = 4; "152"; zpos = 2; "153"; zface = 5; "154"; tlogend = 0.2; "155"; v0 = 0.3; "156"; v = v0; "157"; omega = v0["-u"]()["/"](rlog); "158"; theta = 0; "159"; dt = 0.1; "160"; tstop = 0.3; "161"; logcyl = RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: vector(wide["-u"](), rlog, zpos), size: vector(zface["-"](zpos), 2, 2), axis: vector(0, 0, 1), texture: textures.granite }),]); "163"; leftstop = RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(wide["-u"]()["-"](rlog)["-"](tstop["/"](2)), 0.6["*"](rlog), zpos["+"](zface)["/"](2)), size: vector(tstop, 1.2["*"](rlog), zface["-"](zpos)), color: color.red, emissive: true }),]); "165"; rightstop = RS_interpolate_kwargs.call(__this, box, [RS_desugar_kwargs({ pos: vector(wide["+"](rlog)["+"](tstop["/"](2)), 0.6["*"](rlog), zpos["+"](zface)["/"](2)), size: vector(tstop, 1.2["*"](rlog), zface["-"](zpos)), color: color.red, emissive: true }),]); "169"; y1 = 0.2["*"](h); "170"; y2 = 0.7["*"](h); "171"; rball = 0.4; "172"; Dband = 1.3["*"](pole.size.y); "173"; RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: vector(0, y1["-"](0.9["*"](rball)), 0), axis: vector(0, 1, 0), size: vector(0.1, Dband, Dband), color: color.green }),]); "174"; RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: vector(0, y2["+"](0.9["*"](rball)), 0), axis: vector(0, 1, 0), size: vector(0.1, Dband, Dband), color: color.green }),]); "175"; vball0 = 0.3["*"](v0); "176"; vball = vball0; "177"; ballangle = 0.05["*"](pi); "178"; ball = RS_list_decorate([]); "179"; ball.append(RS_interpolate_kwargs.call(__this, sphere, [RS_desugar_kwargs({ pos: vector(0, 0, 0), size: 2["*"](rball)["*"](vector(1, 1, 1)), color: color.blue }),])); "180"; for (RS_Index5 = 0; (RS_Index5 < 4); RS_Index5++) { nn = RS_Index5; "181"; cc = RS_interpolate_kwargs.call(__this, cone, [RS_desugar_kwargs({ pos: vector(0, 0, 0)["+"](vector(0.8["*"](rball), 0, 0)), axis: vector(3["*"](rball), 0, 0), size: rball["*"](vector(3, 1, 1)), color: color.yellow }),]); "182"; RS_interpolate_kwargs.call(cc, cc.rotate, [RS_desugar_kwargs({ angle: 0.5["*"](nn)["*"](pi), axis: vector(0, 1, 0), origin: vector(0, 0, 0) }),]); "183"; ball.append(cc); }; "184"; ball = compound(ball); "185"; ball.pos = vector(0, y1, 0); "188"; return (function ___closure(_) { var RS_d; RS_d = { }; RS_d["file"] = textures.wood_old; RS_d["turn"] = 1; return _(null, RS_d); })(__cb(_, __frame, 342, 216, function ___(__0, __1) { table = RS_interpolate_kwargs.call(__this, cone, [RS_desugar_kwargs({ pos: vector(0.4["*"](R), h["/"](4), 0.3["-u"]()["*"](R)), size: vector(h["/"](4), 0.6["*"](R), 0.6["*"](R)), axis: vector(0, 1["-u"](), 0), texture: __1 }),]); "190"; tabletop = table.pos; "191"; rspring = 0.02["*"](h); "192"; Lspring = 0.15["*"](R); "193"; Lspring0 = 0.1["*"](R); "194"; hmass = 4["*"](rspring); "195"; post = RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: tabletop, axis: vector(0, 1, 0), size: vector(2["*"](hmass), 0.4, 0.4), color: color.gray(0.6) }),]); "196"; spring = RS_interpolate_kwargs.call(__this, helix, [RS_desugar_kwargs({ pos: post.pos["+"](vector(0, hmass["/"](2), 0)), size: vector(Lspring, 2["*"](rspring), 2["*"](rspring)), color: color.orange, thickness: rspring }),]); "198"; mass = RS_interpolate_kwargs.call(__this, cylinder, [RS_desugar_kwargs({ pos: post.pos["+"](vector(Lspring, 0, 0)), axis: vector(0, 1, 0), size: vector(hmass, 0.04["*"](R), 0.04["*"](R)), color: color.orange }),]); "200"; mass.p = vector(10, 0, 5); "201"; mass.m = 1; "202"; kspring = 200; "203"; deltat = 0.01; "206"; Rcloud = 0.8["*"](R); "207"; omegacloud = 3["*"](v0)["/"](Rcloud); "208"; cloud = RS_interpolate_kwargs.call(__this, sphere, [RS_desugar_kwargs({ pos: vector(0, 0.7["*"](h), Rcloud["-u"]()), size: vector(5, 2, 2), color: color.green, opacity: 0.3 }),]); "211"; rhairs = 0.025; "212"; dhairs = 2; "213"; maxcosine = dhairs["/"](sqrt(Math.pow(rhairs, 2)["+"](Math.pow(dhairs, 2)))); "214"; haircolor = color.black; "215"; roam = 0; "217"; scene.visible = false; "218"; return scene.waitfor("textures", __cb(_, __frame, 391, 10, function __$main() { "219"; scene.visible = true; "221"; roam = false; "223";
if (!setroam.__argnames__) { Object.defineProperties(setroam, {
__argnames__: { value: ["evt",] } }); } ;
"227";
scene.bind("mousedown mouseup", setroam);
"229";
hue = 0;
"230";
dhue = 0.01;
"231";
gangle = 0.03;
"233"; return (function ___(__break) { var __more; var __loop = __cb(_, __frame, 0, 0, function __$main() { __more = false;
var __5 = true; if (__5) {
"234";
return rate(30, __cb(_, __frame, 418, 8, function __$main() {
"237";
if (roam) {
"238";
ray = scene.mouse.ray;
"239";
if ((abs(ray.dot(scene.forward)) < maxcosine)) {
"240";
newray = norm(vector(ray.x, 0, ray.z));
"241";
angle = asin(scene.forward.cross(newray).dot(scene.up));
"242";
RS_interpolate_kwargs.call(scene.camera, scene.camera.rotate, [RS_desugar_kwargs({ angle: angle["/"](30), axis: scene.up }),]);
"243";
scene.camera.pos = scene.camera.pos["+"](ray.y["/"](2)["*"](norm(scene.camera.axis))); } ; } ;
"245";
hue += dhue;
"246";
entry.color = color.hsv_to_rgb(vector(hue, 1, 1));
"248";
RS_interpolate_kwargs.call(B, B.rotate, [RS_desugar_kwargs({ angle: 0.05, axis: scene.up }),]);
"250";
RS_interpolate_kwargs.call(gear1, gear1.rotate, [RS_desugar_kwargs({ angle: gangle, axis: vector(0, 0, 1) }),]);
"251";
RS_interpolate_kwargs.call(gear2, gear2.rotate, [RS_desugar_kwargs({ angle: gangle["-u"](), axis: vector(0, 0, 1) }),]);
"254";
theta = theta["+"](omega["*"](dt));
"255";
logcyl.pos.x = logcyl.pos.x["+"](v["*"](dt));
"256";
RS_interpolate_kwargs.call(logcyl, logcyl.rotate, [RS_desugar_kwargs({ angle: omega["*"](dt), axis: vector(0, 0, 1) }),]);
"257";
if ((logcyl.pos.x >= wide)) {
"258";
v = v0["-u"]();
"259";
omega = v["-u"]()["/"](rlog);
"260";
if (rightstop.color.equals(color.red)) {
"261";
rightstop.color = color.cyan;
"262"; }
else {
"263";
rightstop.color = color.red; } ; } ;
"264";
if ((logcyl.pos.x <= wide["-u"]())) {
"265";
v = v0;
"266";
omega = v["-u"]()["/"](rlog);
"267";
if (leftstop.color.equals(color.red)) {
"268";
leftstop.color = color.cyan;
"269"; }
else {
"270";
leftstop.color = color.red; } ; } ;
"273";
RS_interpolate_kwargs.call(cloud, cloud.rotate, [RS_desugar_kwargs({ angle: omegacloud["*"](dt), origin: vector(0, 0, 0), axis: vector(0, 1, 0) }),]);
"276";
ball.pos.y = ball.pos.y["+"](vball["*"](dt));
"277";
RS_interpolate_kwargs.call(ball, ball.rotate, [RS_desugar_kwargs({ angle: ballangle, axis: vector(0, 1, 0), origin: vector(0, 0, 0) }),]);
"278";
if ((ball.pos.y >= y2)) {
"279";
vball = vball0["-u"]();
"280";
ballangle = ballangle["-u"](); } ;
"281";
if ((ball.pos.y <= y1)) {
"282";
vball = vball0;
"283";
ballangle = ballangle["-u"](); } ;
"286";
for (RS_Index6 = 0; (RS_Index6 < Nrings); RS_Index6++) {
i = RS_Index6;
"288";
smoke[((((typeof i === "number") && (i < 0))) ? smoke.length["+"](i) : i)].pos = smoke[((((typeof i === "number") && (i < 0))) ? smoke.length["+"](i) : i)].pos["+"](vector(0, dy, 0));
"289";
smoke[((((typeof i === "number") && (i < 0))) ? smoke.length["+"](i) : i)].radius = smoke[((((typeof i === "number") && (i < 0))) ? smoke.length["+"](i) : i)].radius["+"](dr["/"](spacing)["*"](dy));
"290";
smoke[((((typeof i === "number") && (i < 0))) ? smoke.length["+"](i) : i)].thickness = smoke[((((typeof i === "number") && (i < 0))) ? smoke.length["+"](i) : i)].thickness["-"](dthick["/"](spacing)["*"](dy)); };
"291";
y = y["+"](dy);
"292";
if ((y >= spacing)) {
"294";
y = 0;
"295";
smoke[((((typeof top === "number") && (top < 0))) ? smoke.length["+"](top) : top)].pos = vector(x0, y0, z0);
"296";
smoke[((((typeof top === "number") && (top < 0))) ? smoke.length["+"](top) : top)].radius = r0;
"297";
smoke[((((typeof top === "number") && (top < 0))) ? smoke.length["+"](top) : top)].thickness = thick;
"298";
top = top["-"](1); } ;
"299";
if ((top < 0)) {
"300";
top = Nrings["-"](1); } ;
"303";
F = kspring["-u"]()["*"](spring.size.x["-"](Lspring0))["*"](spring.axis.norm());
"304";
mass.p = mass.p["+"](F["*"](deltat));
"305";
mass.pos = mass.pos["+"](mass.p["/"](mass.m)["*"](deltat));
"306";
spring.axis = mass.pos["+"](vector(0, hmass["/"](2), 0))["-"](spring.pos);
"309";
clock.update(); while (__more) { __loop(); }; __more = true; }, true)); } else { __break(); } ; }); do { __loop(); } while (__more); __more = true; })(_); }, true)); }, true)); }, true)); });};
if (!main.__argnames__) { Object.defineProperties(main, {
__argnames__: { value: ["_",] } });};
;$(function(){ window.__context = { glowscript_container: $("#glowscript").removeAttr("id") }; main(__func) })})()
//--><!]]></script>
</div>