aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/GLAnchorPoint.js
diff options
context:
space:
mode:
authorJonathan Duran2012-02-09 12:10:37 -0800
committerJonathan Duran2012-02-09 12:10:37 -0800
commit2092acf520e3f346f15e42c76c2f616e7d094c97 (patch)
tree9b6948aa3efc69015ed6988540e66984f34ef79c /js/helper-classes/RDGE/GLAnchorPoint.js
parent74832b23c768974f71a32044c5d5481909ece931 (diff)
downloadninja-2092acf520e3f346f15e42c76c2f616e7d094c97.tar.gz
Squashed commit of the following:
commit ce81a3f4387d80f9ac406e73b843fb5dbe9cf432 Merge: e78f431 fba39db Author: Valerio Virgillito <valerio@motorola.com> Date: Thu Feb 9 11:57:35 2012 -0800 Merge pull request #26 from pushkarjoshi/pentool Pentool commit e78f4312c194d9e8188075cf1fe87e4be22b24e4 Author: Valerio Virgillito <valerio@motorola.com> Date: Thu Feb 9 11:56:40 2012 -0800 adding oneway to the 3d bindings to fix a bug where the stage was getting selected. Signed-off-by: Valerio Virgillito <valerio@motorola.com> commit fba39dbb3bd64eddf6162fbf57232089e446fb06 Author: Pushkar Joshi <pushkar@motorola.com> Date: Thu Feb 9 10:50:05 2012 -0800 removing shaders commit fa700027b541ec8f37c55f4fe17da5f78759ebd5 Author: Pushkar Joshi <pushkar@motorola.com> Date: Wed Feb 8 16:06:37 2012 -0800 fill all paths even if they are open commit 18243deb66ab14a014756bfb0be1a52648c7771a Merge: 802e92e 0537f8f Author: Pushkar Joshi <pushkar@motorola.com> Date: Wed Feb 8 15:42:40 2012 -0800 Merge branch 'master' into pentool Conflicts: js/helper-classes/RDGE/GLWorld.js js/helper-classes/RDGE/MaterialsLibrary.js commit 802e92eb70b00849dadacf2c6590d27edbe65d99 Author: Pushkar Joshi <pushkar@motorola.com> Date: Wed Feb 8 15:39:47 2012 -0800 bug fixes for better anchor point rotation and removing snapping on hover and mouse down commit 9b6b228524f14bf65ba60aaf3d0993c8ec5bff2d Author: Pushkar Joshi <pushkar@motorola.com> Date: Tue Feb 7 15:22:11 2012 -0800 some minor bug fixes and code cleanup commit 4bbe42e6d01fd0f81d13357a75b40eae9925dda3 Merge: e7aa17a 8950b34 Author: Pushkar Joshi <pushkar@motorola.com> Date: Tue Feb 7 07:21:27 2012 -0800 Merge branch 'master' into pentool commit e7aa17a9b472640355e95c54841399f6203050d4 Author: Pushkar Joshi <pushkar@motorola.com> Date: Tue Feb 7 07:20:28 2012 -0800 don't use colorToHex function because it only works for 3D color (needs a fix to colorToHex) commit acc500d1f1c76f4e7c93ae1cfea8d925ca95e7b9 Merge: 4d4de64 4222db9 Author: Pushkar Joshi <pushkar@motorola.com> Date: Thu Feb 2 11:28:45 2012 -0800 Merge branch 'working' of c:/Code/github/emueller/ninja-internal/ into pentool commit 4d4de64472603426a73b26cc98ba8206190949b8 Merge: 0e87c02 5233508 Author: Pushkar Joshi <pushkar@motorola.com> Date: Thu Feb 2 11:19:30 2012 -0800 Merge branch 'master' into pentool commit 4222db97e353fb65fab787ba5927d16d9fa4e1f7 Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 16:18:26 2012 -0800 Removed a console log and set the Plasma material to animating. commit 30bc466a0ac80f8303e223c19704b90457293cdc Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 15:57:20 2012 -0800 Fixed plane orientations for view orientations other than front. commit 11db5a63bda57c630eaf1d8baded9b79ca7ac1f2 Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 15:11:21 2012 -0800 listen for the appMouseUp event in the Pan tool commit 823945a2bcb42bbf9c6a1cd0ef723b8f415e557f Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 14:39:46 2012 -0800 factor in the zoom factor when drawing the stage compass. commit 0e87c02e74e08c7bf156373b0d2459563e17ecd6 Author: Pushkar Joshi <pushkar@motorola.com> Date: Wed Feb 1 14:38:15 2012 -0800 make GLAnchorPoint functions as part of its prototype commit 5a288b9d3f8e6690149978d9d0e7bea98cc81312 Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 14:09:24 2012 -0800 Fix for a marquee zoom bug. commit 715f95cacead0025a57823e4cefa22e618f15df0 Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 14:00:06 2012 -0800 mouse wheel for zoom tool commit 62d38a080b2918a0284c854e9bf882bfeeea1e0b Author: Pushkar Joshi <pushkar@motorola.com> Date: Wed Feb 1 13:21:11 2012 -0800 avoid overriding GlGeomObj translate method commit 799369e153baf92eb10f26e91a1ab664900da8ed Merge: b2ce8b8 c0f4374 Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 13:06:17 2012 -0800 Merge branch 'ToolFixes' of github.com:mqg734/ninja-internal into working commit b2ce8b819cc85a558d862c04965b7e65a6ce8640 Author: hwc487 <hwc487@motorola.com> Date: Wed Feb 1 13:05:32 2012 -0800 changes to allow minimal rendering ofnon-animated materials. commit ada488781ff815a827e7f5903f2c55773e3be0f3 Author: Pushkar Joshi <pushkar@motorola.com> Date: Wed Feb 1 12:16:11 2012 -0800 when selecting anchor points, first check if the selected anchor position is close enough commit 107f79288ed87a282dd52075640297cc02bdf318 Author: Pushkar Joshi <pushkar@motorola.com> Date: Wed Feb 1 12:00:44 2012 -0800 performance improvement: add most of the GLSubpath functions to its prototype commit c00d5d3072e487be200559f692ce4399222d5fa5 Author: Pushkar Joshi <pushkar@motorola.com> Date: Tue Jan 31 14:25:05 2012 -0800 handle the case of proper redraw when the alt key is held down even after mouse up commit c006b3e75d5e23da63687a04cd30bf56a3a8a80d Merge: f0e3fa6 1d8af9f Author: Pushkar Joshi <pushkar@motorola.com> Date: Tue Jan 31 12:07:43 2012 -0800 Merge branch 'master' into pentool commit f0e3fa691b3c042c9fc49a7a0cde8ddf8100c195 Author: Pushkar Joshi <pushkar@motorola.com> Date: Tue Jan 31 12:05:15 2012 -0800 display the anchor point to be selected on mouse hover commit aa1b4b78d9e1b9cc15529dbf7196b7ac8a88e260 Merge: 0b8d8b2 6066b9b Author: hwc487 <hwc487@motorola.com> Date: Tue Jan 31 10:46:48 2012 -0800 Merge branch 'ToolFixes' of github.com:mqg734/ninja-internal into working Conflicts: js/stage/stage.reel/stage.js commit 0b8d8b2eb595b64ef53440b949f3c5ec891daf8a Merge: 8e43a46 e4837ed Author: hwc487 <hwc487@motorola.com> Date: Tue Jan 31 09:22:56 2012 -0800 Merge branch 'master' of github.com:Motorola-Mobility/ninja-internal into working commit 8e43a46e3d79323fe06dc7771bc611a2c3c85c5c Author: hwc487 <hwc487@motorola.com> Date: Mon Jan 30 16:15:12 2012 -0800 Renderer startup handling of non-animated materials. Changed zoom from the document bar to keep the location center of the viewable portion of the document fixed. commit c41d2c2b749b67921f243fb7594ce0cdb1ccce36 Merge: 86a801c f129a23 Author: hwc487 <hwc487@motorola.com> Date: Mon Jan 30 16:09:00 2012 -0800 Merge branch 'staging' of github.com:Motorola-Mobility/ninja-internal into working commit 972e0ce4df7b332601ad006ca8b7dd9e189a59ef Author: Pushkar Joshi <pushkar@motorola.com> Date: Mon Jan 30 14:38:48 2012 -0800 do the fill before the stroke for the path, so the stroke width renders acc. to user specification commit da7ad067b146200847b543faf288844221dff928 Author: Pushkar Joshi <pushkar@motorola.com> Date: Mon Jan 30 14:30:31 2012 -0800 missed a couple of pen tool property files on last checkin commit 76abbaafb0d90bb1dc9c63a5a5a78ab95bb00420 Author: Pushkar Joshi <pushkar@motorola.com> Date: Mon Jan 30 13:56:33 2012 -0800 Merge pushkar branch on gerritt with github version commit 86a801c057fc3b0580d6130be5740c2ee503444f Author: hwc487 <hwc487@motorola.com> Date: Fri Jan 27 15:52:36 2012 -0800 updated from old repo Signed-off-by: Jonathan Duran <jduran@motorola.com>
Diffstat (limited to 'js/helper-classes/RDGE/GLAnchorPoint.js')
-rw-r--r--js/helper-classes/RDGE/GLAnchorPoint.js239
1 files changed, 125 insertions, 114 deletions
diff --git a/js/helper-classes/RDGE/GLAnchorPoint.js b/js/helper-classes/RDGE/GLAnchorPoint.js
index 496b6f60..716f59d4 100644
--- 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;
133 this.getNextY = function () { return this._nextY; } 71
134 this.getNextZ = function () { return this._nextZ; } 72 // *** compute the vector from anchor to next
135 this.getPos = function() { return Vector.create([this._x, this._y, this._z]);} 73 var oldN = Vector.create([this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]);
136 this.getPrev = function() { return Vector.create([this._prevX, this._prevY, this._prevZ]);} 74 var rotMat = Matrix.Rotation(-angle, axis);
137 this.getNext = function() { return Vector.create([this._nextX, this._nextY, this._nextZ]);} 75 var newN = MathUtils.transformVector(oldN, rotMat);
138 //return the square of distance from passed in point to the anchor position 76
139 this.getDistanceSq = function (x, y, z) { 77 //TEMP for some situations the axis angle computation returns NaNs
140 return (this._x - x) * (this._x - x) + (this._y - y) * (this._y - y) + (this._z - z) * (this._z - z); 78 if (isNaN(newN[0]) || isNaN(newN[1]) || isNaN(newN[2])) {
141 } 79 console.log("NaN in translateNextFromPrev");
142 //return sq. of distance to prev. 80 return;
143 this.getPrevDistanceSq = function (x, y, z) {
144 return (this._prevX - x) * (this._prevX - x) + (this._prevY - y) * (this._prevY - y) + (this._prevZ - z) * (this._prevZ - z);
145 } 81 }
146 //return sq. of distance to next 82 //end TEMP
147 this.getNextDistanceSq = function (x, y, z) { 83 this._nextX = this._x + newN[0];
148 return (this._nextX - x) * (this._nextX - x) + (this._nextY - y) * (this._nextY - y) + (this._nextZ - z) * (this._nextZ - z); 84 this._nextY = this._y + newN[1];
85 this._nextZ = this._z + newN[2];
86}
87//translate the next point from the translation that was applied to the prev. point
88GLAnchorPoint.prototype.translatePrevFromNext = function (tx, ty, tz) {
89 //do nothing if the total translation is zero
90 var totalTransSq = (tx*tx) + (ty*ty) + (tz*tz);
91 if (totalTransSq < 0.0000001)
92 return;
93
94 // *** compute the rotation of the next vector ***
95 var oldN = Vector.create([this._nextX + tx - this._x, this._nextY + ty - this._y, this._nextZ + tz - this._z]);
96 var newN = Vector.create([this._nextX - this._x, this._nextY - this._y, this._nextZ - this._z]);
97 //compute angle between the two vectors
98 var axis = Vector.create([0, 0, 0]);
99 var angle = MathUtils.getAxisAngleBetween3DVectors(oldN, newN, axis);
100 if (angle === 0)
101 return;
102
103 // *** compute the vector from anchor to prev
104 var oldP = Vector.create([this._prevX - this._x, this._prevY - this._y, this._prevZ - this._z]);
105 var rotMat = Matrix.Rotation(-angle, axis);
106 var newP = MathUtils.transformVector(oldP, rotMat);
107