diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-04-09 17:45:32 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-04-09 17:45:32 -0400 |
| commit | cbd5e2411cd4df39dda75723da9c5e0153ad3331 (patch) | |
| tree | 61090416889211be2b0d2a37cf5fe0fd545a77e7 /assets/javascripts/environments | |
| parent | 12d7bd4b9dba1c9e51b80059af650ff3fbfda0ca (diff) | |
box-drawing example
Diffstat (limited to 'assets/javascripts/environments')
| -rw-r--r-- | assets/javascripts/environments/app.js | 30 | ||||
| -rw-r--r-- | assets/javascripts/environments/tableaux/_empty.js | 32 | ||||
| -rw-r--r-- | assets/javascripts/environments/tableaux/columns.js | 36 | ||||
| -rw-r--r-- | assets/javascripts/environments/tableaux/columns_circle.js | 42 | ||||
| -rw-r--r-- | assets/javascripts/environments/tableaux/columns_split.js | 63 |
5 files changed, 203 insertions, 0 deletions
diff --git a/assets/javascripts/environments/app.js b/assets/javascripts/environments/app.js new file mode 100644 index 0000000..27a5222 --- /dev/null +++ b/assets/javascripts/environments/app.js @@ -0,0 +1,30 @@ +var scrubber, fish, floor + +viewHeight = 400 + +var environment = new function(){} +environment.init = function(){ + + scene.camera.move({ + "x": 0, + "y": 0, + "z": 0, + "rotationX": 0.085, + "rotationY": 0.025 + }) + map && map.zoom(3.10) && map.recenter() + + // + // intro floor, models, etc + +} + + +environment.update = function(t){ + + // add continuous animations and stuff here + + map && map.update() + +} + diff --git a/assets/javascripts/environments/tableaux/_empty.js b/assets/javascripts/environments/tableaux/_empty.js new file mode 100644 index 0000000..b69fa78 --- /dev/null +++ b/assets/javascripts/environments/tableaux/_empty.js @@ -0,0 +1,32 @@ +/* + +MX.Tableaux.Foo = MX.Tableau.extend({ + + init: function (opt) { + + this.opt = opt = defaults(opt, { + width: 100, + height: 100, + depth: 100, + x: 0, + y: 0, + z: 0, + rotationY: 0, + rotationX: 0, + scale: 1, + }) + + }, + + animate: function() { + }, + + show: function(){ + }, + + hide: function(){ + }, + +}) + +*/ diff --git a/assets/javascripts/environments/tableaux/columns.js b/assets/javascripts/environments/tableaux/columns.js new file mode 100644 index 0000000..e961315 --- /dev/null +++ b/assets/javascripts/environments/tableaux/columns.js @@ -0,0 +1,36 @@ +MX.Tableaux.Columns = MX.Tableau.extend({ + + init: function (opt) { + + this.opt = opt = defaults(opt, { + width: 10, + height: 10, + depth: 10, + x: 0, + y: 0, + z: 0, + rotationY: 0, + rotationX: 0, + scale: 1, + count: 3, + spacingX: 0, + spacingZ: 100, + }) + + for (var i = 0; i < opt.count; i++) { + var scalebox = new MX.ScaleBox({ + "width": opt.width, + "height": opt.height, + "depth": opt.depth, + "x": opt.x + opt.spacingX * i, + "y": opt.y, + "z": opt.z + opt.spacingZ * i, + "color": opt.color, + "sides": "top bottom left right front back" + }); + scene.add(scalebox) + } + + } + +}) diff --git a/assets/javascripts/environments/tableaux/columns_circle.js b/assets/javascripts/environments/tableaux/columns_circle.js new file mode 100644 index 0000000..1816e51 --- /dev/null +++ b/assets/javascripts/environments/tableaux/columns_circle.js @@ -0,0 +1,42 @@ +MX.Tableaux.ColumnsCircle = MX.Tableau.extend({ + + init: function (opt) { + + this.opt = opt = defaults(opt, { + width: 10, + height: 10, + depth: 10, + radius: 10, + theta: 0, + skip: 0, + x: 0, + y: 0, + z: 0, + rotationY: 0, + rotationX: 0, + scale: 1, + count: 3, + }) + + var scalebox, theta + var radius = opt.radius + + for (var i = opt.skip; i < opt.count; i++) { + theta = i/opt.count * TWO_PI + opt.theta + scalebox = new MX.ScaleBox({ + "width": opt.width, + "height": opt.height, + "depth": opt.depth, + "x": opt.x + sin(theta) * radius, + "y": opt.y, + "z": opt.z + cos(theta) * radius, + "rotationY": PI - theta, + "color": opt.color, + "sides": "top bottom left right front back" + }); + scene.add(scalebox) + } + + } + +}) diff --git a/assets/javascripts/environments/tableaux/columns_split.js b/assets/javascripts/environments/tableaux/columns_split.js new file mode 100644 index 0000000..b9981d6 --- /dev/null +++ b/assets/javascripts/environments/tableaux/columns_split.js @@ -0,0 +1,63 @@ +MX.Tableaux.ColumnsSplit = MX.Tableau.extend({ + + init: function (opt) { + + this.opt = opt = defaults(opt, { + width: 100, + height: 100, + depth: 100, + norm: 0.5, + gap: 5, + x: 0, + y: 0, + z: 0, + rotationY: 0, + scale: 1, + count: 1, + }) + + opt.colorBottom = opt.colorBottom || opt.color + + if ( ! (opt.norm instanceof Array) ) { + opt.norm = [ opt.norm, opt.norm ] + } + + var norm, spacingX, spacingZ, scalebox + + for (var i = 0; i < opt.count; i++) { + + norm = lerp( i/(opt.count-1), opt.norm[0], opt.norm[1] ) + + spacingX = opt.spacingX * i + spacingZ = opt.spacingZ * i + + scalebox = new MX.ScaleBox({ + "width": opt.width, + "height": opt.height * norm, + "depth": opt.depth, + "x": opt.x + spacingX, + "y": opt.y + opt.gap, + "z": opt.z + spacingZ, + "color": opt.color, + "sides": "top bottom left right front back", + "rotationY": opt.rotationY, + }); + scene.add(scalebox) + + scalebox = new MX.ScaleBox({ + "width": opt.width, + "height": opt.height * (1 - norm), + "depth": opt.depth, + "x": opt.x + spacingX, + "y": opt.y - opt.height * (1 - norm) - opt.gap, + "z": opt.z + spacingZ, + "color": opt.colorBottom, + "sides": "top bottom left right front back", + "rotationY": opt.rotationY, + }); + scene.add(scalebox) + } + + } + +}) |
