aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes
diff options
context:
space:
mode:
Diffstat (limited to 'js/helper-classes')
-rwxr-xr-xjs/helper-classes/3D/math-utils.js18
-rwxr-xr-xjs/helper-classes/RDGE/GLAnchorPoint.js239
-rwxr-xr-xjs/helper-classes/RDGE/GLBrushStroke.js7
-rwxr-xr-xjs/helper-classes/RDGE/GLCircle.js10
-rwxr-xr-xjs/helper-classes/RDGE/GLGeomObj.js3
-rwxr-xr-xjs/helper-classes/RDGE/GLMaterial.js29
-rwxr-xr-xjs/helper-classes/RDGE/GLRectangle.js9
-rwxr-xr-xjs/helper-classes/RDGE/GLSubpath.js2317
-rwxr-xr-xjs/helper-classes/RDGE/GLWorld.js229
-rwxr-xr-xjs/helper-classes/RDGE/Materials/BumpMetalMaterial.js66
-rwxr-xr-xjs/helper-classes/RDGE/Materials/FlatMaterial.js43
-rwxr-xr-xjs/helper-classes/RDGE/Materials/IridescentScalesMaterial.js5
-rwxr-xr-xjs/helper-classes/RDGE/Materials/JuliaMaterial.js3
-rwxr-xr-xjs/helper-classes/RDGE/Materials/KeleidoscopeMaterial.js3
-rwxr-xr-xjs/helper-classes/RDGE/Materials/LinearGradientMaterial.js4
-rwxr-xr-xjs/helper-classes/RDGE/Materials/MandelMaterial.js4
-rwxr-xr-xjs/helper-classes/RDGE/Materials/PlasmaMaterial.js2
-rwxr-xr-xjs/helper-classes/RDGE/Materials/PulseMaterial.js15
-rwxr-xr-xjs/helper-classes/RDGE/Materials/RadialBlurMaterial.js3
-rwxr-xr-xjs/helper-classes/RDGE/Materials/RadialGradientMaterial.js188
-rwxr-xr-xjs/helper-classes/RDGE/Materials/TunnelMaterial.js3
-rwxr-xr-xjs/helper-classes/RDGE/Materials/TwistMaterial.js3
-rwxr-xr-xjs/helper-classes/RDGE/Materials/UberMaterial.js25
-rwxr-xr-xjs/helper-classes/RDGE/rdge-compiled.js102
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/engine.js18
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/init_state.js7
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/jshader.js6
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/renderer.js14
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/run_state.js10
-rwxr-xr-xjs/helper-classes/RDGE/src/core/script/runtime.js2
30 files changed, 1609 insertions, 1778 deletions
diff --git a/js/helper-classes/3D/math-utils.js b/js/helper-classes/3D/math-utils.js
index 71ed62a0..3d24f76e 100755
--- a/js/helper-classes/3D/math-utils.js
+++ b/js/helper-classes/3D/math-utils.js
@@ -802,19 +802,21 @@ var MathUtilsClass = exports.MathUtilsClass = Object.create(Object.prototype, {
802 getAxisAngleBetween3DVectors: { 802 getAxisAngleBetween3DVectors: {
803 value: function (vec1, vec2, axis) { 803 value: function (vec1, vec2, axis) {
804 //compute magnitudes of the vectors 804 //compute magnitudes of the vectors
805 var mag1 = VecUtils.vecMag(3, vec1); 805 var v1n = VecUtils.vecNormalize(3, vec1, 1.0);
806 var mag2 = VecUtils.vecMag(3, vec2); 806 var v2n = VecUtils.vecNormalize(3, vec2, 1.0);
807
808 if (mag1 < this.EPSILON || mag2 < this.EPSILON) {
809 return 0; //if angle 0 is returned nothing from this function should be used
810 }
811 //angle between the vectors (acos for now...) 807 //angle between the vectors (acos for now...)
812 var angle = Math.acos(VecUtils.vecDot(3, vec1, vec2) / (mag1 * mag2)); 808 var angle = Math.acos(VecUtils.vecDot(3, v1n, v2n));
813 if (Math.abs(angle) < this.EPSILON) { 809 if (Math.abs(angle) < this.EPSILON) {
814 return 0; 810 return 0;
815 } 811 }
812 //TODO testing...remove this block
813 console.log("getAxisAngleBetween3DVectors Angle: "+angle);
814 if (isNaN(angle)){
815 console.log("getAxisAngleBetween3DVectors Angle is NaN");
816 }
817 //TODO end testing block
816 //optionally, if axis is provided, create the axis of rotation as well 818 //optionally, if axis is provided, create the axis of rotation as well
817 var rotAxis = VecUtils.vecCross(3, vec1, vec2); 819 var rotAxis = VecUtils.vecCross(3, v1n, v2n);
818 rotAxis = VecUtils.vecNormalize(3, rotAxis, 1); 820 rotAxis = VecUtils.vecNormalize(3, rotAxis, 1);
819 axis[0] = rotAxis[0]; 821 axis[0] = rotAxis[0];
820 axis[1] = rotAxis[1]; 822 axis[1] = rotAxis[1];
diff --git a/js/helper-classes/RDGE/GLAnchorPoint.js b/js/helper-classes/RDGE/GLAnchorPoint.js
index 496b6f60..716f59d4 100755
--- a/js/helper-classes/RDGE/GLAnchorPoint.js
+++ b/js/helper-classes/RDGE/GLAnchorPoint.js
@@ -26,125 +26,136 @@ function GLAnchorPoint() {
26 this._nextX = 0.0; 26 this._nextX = 0.0;
27 this._nextY = 0.0; 27 this._nextY = 0.0;
28 this._nextZ = 0.0; 28 this._nextZ = 0.0;
29 29}
30 // *********** setters ************ 30 // *********** setters ************
31 this.setPos = function (x, y, z) { this._x = x; this._y = y; this._z = z; } 31GLAnchorPoint.prototype.setPos = function (x, y, z) { this._x = x; this._y = y; this._z = z; }
32 this.setPrevPos = function (x, y, z) { this._prevX = x; this._prevY = y; this._prevZ = z; } 32GLAnchorPoint.prototype.setPrevPos = function (x, y, z) { this._prevX = x; this._prevY = y; this._prevZ = z; }
33 this.setNextPos = function (x, y, z) { this._nextX = x; this._nextY = y; this._nextZ = z; } 33GLAnchorPoint.prototype.setNextPos = function (x, y, z) { this._nextX = x; this._nextY = y; this._nextZ = z; }
34
35 this.setPrevFromNext = function () {
36 //set the previous control point by reflecting the next control point
37 var dispX = this._nextX - this._x;
38 var dispY = this._nextY - this._y;
39 var dispZ = this._nextZ - this._z;
40
41 this._prevX = this._x - dispX;
42 this._prevY = this._y - dispY;
43 this._prevZ = this._z - dispZ;
44 }
45 this.setNextFromPrev = function () {
46 //set the previous control point by reflecting the next control point
47 var dispX = this._prevX - this._x;
48 var dispY = this._prevY - this._y;
49 var dispZ = this._prevZ - this._z;
50
51 this._nextX = this._x - dispX;
52 this._nextY = this._y - dispY;
53 this._nextZ = this._z - dispZ;
54 }
55 34
56 //translate the next point from the translation that was applied to the prev. point 35GLAnchorPoint.prototype.setPrevFromNext = function () {
57 this.translateNextFromPrev = function (tx, ty, tz) { 36 //set the previous control point by reflecting the next control point
58 // *** compute the rotation of the prev vector *** 37 var dispX = this._nextX - this._x;
59 var oldP = Vector.create([this._prevX + tx - this._x, this._prevY + ty - this._y, this._prevZ + tz - this._z]); 38 var dispY = this._nextY - this._y;
60 var newP = Vector.create([this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]); 39 var dispZ = this._nextZ - this._z;
61 //compute angle between the two vectors
62 var axis = Vector.create([0, 0, 0]);
63 var angle = MathUtils.getAxisAngleBetween3DVectors(oldP, newP, axis);
64 if (angle === 0)
65 return;
66
67 // *** compute the vector from anchor to next
68 var oldN = Vector.create([this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]);
69 var rotMat = Matrix.Rotation(-angle, axis);
70 var newN = MathUtils.transformVector(oldN, rotMat);
71
72 //TEMP for some situations the axis angle computation returns NaNs
73 if (isNaN(newN[0]) || isNaN(newN[1]) || isNaN(newN[2])) {
74 return;
75 }
76 //end TEMP
77 this._nextX = this._x + newN[0];
78 this._nextY = this._y + newN[1];
79 this._nextZ = this._z + newN[2];
80 }
81 //translate the next point from the translation that was applied to the prev. point
82 this.translatePrevFromNext = function (tx, ty, tz) {
83 // *** compute the rotation of the next vector ***
84 var oldN = Vector.create([this._nextX + tx - this._x, this._nextY + ty - this._y, this._nextZ + tz - this._z]);
85 var newN = Vector.create([this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]);
86 //compute angle between the two vectors
87 var axis = Vector.create([0, 0, 0]);
88 var angle = MathUtils.getAxisAngleBetween3DVectors(oldN, newN, axis);
89 if (angle === 0)
90 return;
91
92 // *** compute the vector from anchor to prev
93 var oldP = Vector.create([this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]);
94 var rotMat = Matrix.Rotation(-angle, axis);
95 var newP = MathUtils.transformVector(oldP, rotMat);
96
97 //TEMP for some situations the axis angle computation returns NaNs
98 if (isNaN(newP[0]) || isNaN(newP[1]) || isNaN(newP[2])) {
99 return;
100 }
101 //end TEMP
102 this._prevX = this._x + newP[0];
103 this._prevY = this._y + newP[1];
104 this._prevZ = this._z + newP[2];
105 }
106 40
41 this._prevX = this._x - dispX;
42 this._prevY = this._y - dispY;
43 this._prevZ = this._z - dispZ;
44}
45GLAnchorPoint.prototype.setNextFromPrev = function () {
46 //set the previous control point by reflecting the next control point
47 var dispX = this._prevX - this._x;
48 var dispY = this._prevY - this._y;
49 var dispZ = this._prevZ - this._z;
107 50
108 // ******* modifiers ******* 51 this._nextX = this._x - dispX;
109 this.translatePrev = function (x, y, z) { 52 this._nextY = this._y - dispY;
110 this._prevX += x; this._prevY += y; this._prevZ += z; 53 this._nextZ = this._z - dispZ;
111 } 54}
112 this.translateNext = function (x, y, z) { 55
113 this._nextX += x; this._nextY += y; this._nextZ += z; 56//translate the next point from the translation that was applied to the prev. point
114 } 57GLAnchorPoint.prototype.translateNextFromPrev = function (tx, ty, tz) {
115 this.translate = function (x, y, z) { 58 //do nothing if the total translation is zero
116 this._x += x; this._y += y; this._z += z; 59 var totalTransSq = (tx*tx) + (ty*ty) + (tz*tz);
117 } 60 if (totalTransSq < 0.0000001)
118 this.translateAll = function (x, y, z) { 61 return;
119 this.translate(x, y, z);
120 this.translatePrev(x, y, z);
121 this.translateNext(x, y, z);
122 }
123
124 62
125 // ********* getters ********** 63 // *** compute the rotation of the prev vector ***
126 this.getPosX = function () { return this._x; } 64 var oldP = Vector.create([this._prevX + tx - this._x, this._prevY + ty - this._y, this._prevZ + tz - this._z]);
127 this.getPosY = function () { return this._y; } 65 var newP = Vector.create([this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]);
128 this.getPosZ = function () { return this._z; } 66 //compute angle between the two vectors
129 this.getPrevX = function () { return this._prevX; } 67 var axis = Vector.create([0, 0, 0]);
130 this.getPrevY = function () { return this._prevY; } 68 var angle = MathUtils.getAxisAngleBetween3DVectors(oldP, newP, axis);
131 this.getPrevZ = function () { return this._prevZ; } 69 if (angle === 0)
132 this.getNextX = function () { return this._nextX; } 70 return;