summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/environments/tableaux
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/environments/tableaux')
-rw-r--r--public/assets/javascripts/environments/tableaux/_empty.js32
-rw-r--r--public/assets/javascripts/environments/tableaux/columns.js36
-rw-r--r--public/assets/javascripts/environments/tableaux/columns_circle.js42
-rw-r--r--public/assets/javascripts/environments/tableaux/columns_split.js63
4 files changed, 173 insertions, 0 deletions
diff --git a/public/assets/javascripts/environments/tableaux/_empty.js b/public/assets/javascripts/environments/tableaux/_empty.js
new file mode 100644
index 0000000..b69fa78
--- /dev/null
+++ b/public/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/public/assets/javascripts/environments/tableaux/columns.js b/public/assets/javascripts/environments/tableaux/columns.js
new file mode 100644
index 0000000..e961315
--- /dev/null
+++ b/public/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/public/assets/javascripts/environments/tableaux/columns_circle.js b/public/assets/javascripts/environments/tableaux/columns_circle.js
new file mode 100644
index 0000000..1816e51
--- /dev/null
+++ b/public/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/public/assets/javascripts/environments/tableaux/columns_split.js b/public/assets/javascripts/environments/tableaux/columns_split.js
new file mode 100644
index 0000000..b9981d6
--- /dev/null
+++ b/public/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)
+ }
+
+ }
+
+})