diff options
Diffstat (limited to 'js/lib/geom/circle.js')
-rwxr-xr-x | js/lib/geom/circle.js | 1388 |
1 files changed, 740 insertions, 648 deletions
diff --git a/js/lib/geom/circle.js b/js/lib/geom/circle.js index 218dcfa6..425b869a 100755 --- a/js/lib/geom/circle.js +++ b/js/lib/geom/circle.js | |||
@@ -7,705 +7,801 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
7 | var GeomObj = require("js/lib/geom/geom-obj").GeomObj; | 7 | var GeomObj = require("js/lib/geom/geom-obj").GeomObj; |
8 | var ShapePrimitive = require("js/lib/geom/shape-primitive").ShapePrimitive; | 8 | var ShapePrimitive = require("js/lib/geom/shape-primitive").ShapePrimitive; |
9 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; | 9 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; |
10 | var drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils; | ||
11 | var vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils; | ||
12 | |||
10 | /////////////////////////////////////////////////////////////////////// | 13 | /////////////////////////////////////////////////////////////////////// |
11 | // Class GLCircle | 14 | // Class GLCircle |
12 | // GL representation of a circle. | 15 | // GL representation of a circle. |
13 | // Derived from class GLGeomObj | 16 | // Derived from class GLGeomObj |
14 | // The position and dimensions of the stroke, fill, and inner Radius should be in pixels | 17 | // The position and dimensions of the stroke, fill, and inner Radius should be in pixels |
15 | /////////////////////////////////////////////////////////////////////// | 18 | /////////////////////////////////////////////////////////////////////// |
16 | var Circle = function GLCircle() { | 19 | exports.Circle = Object.create(GeomObj, { |
17 | 20 | ||
18 | this.init = function( world, xOffset, yOffset, width, height, strokeSize, strokeColor, fillColor, innerRadius, strokeMaterial, fillMaterial, strokeStyle) { | 21 | /////////////////////////////////////////////////////////////////////// |
19 | /////////////////////////////////////////////////////////////////////// | 22 | // Instance variables |
20 | // Instance variables | 23 | /////////////////////////////////////////////////////////////////////// |
21 | /////////////////////////////////////////////////////////////////////// | 24 | _width: { value : 2.0, writable: true }, |
22 | this._width = 2.0; | 25 | _height: { value : 2.0, writable: true }, |
23 | this._height = 2.0; | 26 | _xOffset: { value : 0, writable: true }, |
24 | this._xOffset = 0; | 27 | _yOffset: { value : 0, writable: true }, |
25 | this._yOffset = 0; | 28 | |
26 | 29 | _radius: { value : 2.0, writable: true }, | |
27 | this._radius = 2.0; | 30 | _strokeWidth: { value : 0.25, writable: true }, |
28 | this._strokeWidth = 0.25; | 31 | _innerRadius: { value : 0, writable: true }, |
29 | this._innerRadius = 0; | 32 | _ovalHeight: { value : 4.0, writable: true }, |
30 | 33 | _strokeStyle: { value : "Solid", writable: true }, | |
31 | this._ovalHeight = this._ovalHeight = 2.0 * this._radius; | 34 | _aspectRatio: { value : 1.0, writable: true }, |
32 | 35 | ||
33 | this._strokeStyle = "Solid"; | 36 | init: { |
34 | 37 | value: function(world, xOffset, yOffset, width, height, strokeSize, strokeColor, fillColor, innerRadius, strokeMaterial, fillMaterial, strokeStyle) { | |
35 | this._aspectRatio = 1.0; | 38 | if(arguments.length > 0) { |
36 | 39 | this._width = width; | |
37 | if (arguments.length > 0) { | 40 | this._height = height; |
38 | this._width = width; | 41 | this._xOffset = xOffset; |
39 | this._height = height; | 42 | this._yOffset = yOffset; |
40 | this._xOffset = xOffset; | 43 | this._ovalHeight = 2.0 * this._radius; |
41 | this._yOffset = yOffset; | 44 | |
42 | 45 | this._strokeWidth = strokeSize; | |
43 | this._strokeWidth = strokeSize; | 46 | this._innerRadius = innerRadius; |
44 | this._innerRadius = innerRadius; | 47 | this._strokeColor = strokeColor; |
45 | this._strokeColor = strokeColor; | 48 | this._fillColor = fillColor; |
46 | this._fillColor = fillColor; | 49 | |
47 | 50 | this._strokeStyle = strokeStyle; | |
48 | this._strokeStyle = strokeStyle; | 51 | |
49 | } | 52 | this._matrix = Matrix.I(4); |
50 | 53 | //this._matrix[12] = xOffset; | |
51 | this.m_world = world; | 54 | //this._matrix[13] = yOffset; |
52 | 55 | } | |
53 | if(strokeMaterial){ | 56 | |
54 | this._strokeMaterial = strokeMaterial; | 57 | this.m_world = world; |
55 | } else { | ||
56 | this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); | ||
57 | } | ||
58 | 58 | ||
59 | if(fillMaterial) { | 59 | if(strokeMaterial) { |
60 | this._fillMaterial = fillMaterial; | 60 | this._strokeMaterial = strokeMaterial; |
61 | } else { | 61 | } else { |
62 | this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); | 62 | this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); |
63 | } | ||
64 | |||
65 | if(fillMaterial) { | ||
66 | this._fillMaterial = fillMaterial; | ||
67 | } else { | ||
68 | this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); | ||
69 | } | ||
63 | } | 70 | } |
64 | }; | 71 | }, |
65 | 72 | ||
66 | /////////////////////////////////////////////////////////////////////// | 73 | /////////////////////////////////////////////////////////////////////// |
67 | // Property Accessors | 74 | // Property Accessors |
68 | /////////////////////////////////////////////////////////////////////// | 75 | /////////////////////////////////////////////////////////////////////// |
69 | this.getStrokeWidth = function() { | 76 | // TODO - Use getters/setters in the future |
70 | return this._strokeWidth; | 77 | getStrokeWidth: { |
71 | }; | 78 | value: function() { |
72 | 79 | return this._strokeWidth; | |
73 | this.setStrokeWidth = function(w) { | 80 | } |
74 | this._strokeWidth = w; | 81 | }, |
75 | }; | ||
76 | |||
77 | this.getStrokeMaterial = function() { | ||
78 | return this._strokeMaterial; | ||
79 | }; | ||
80 | 82 | ||
81 | this.setStrokeMaterial = function(m) { | 83 | setStrokeWidth: { |
82 | this._strokeMaterial = m; | 84 | value: function(w) { |
83 | }; | 85 | this._strokeWidth = w; |
86 | } | ||
87 | }, | ||
84 | 88 | ||
85 | this.getFillMaterial = function() { | 89 | getStrokeMaterial: { |
86 | return this._fillMaterial; | 90 | value: function() { |
87 | }; | 91 | return this._strokeMaterial; |
92 | } | ||
93 | }, | ||
88 | 94 | ||
89 | this.setFillMaterial = function(m) { | 95 | setStrokeMaterial: { |
90 | this._fillMaterial = m; | 96 | value: function(m) { |
91 | }; | 97 | this._strokeMaterial = m; |
98 | } | ||
99 | }, | ||
92 | 100 | ||
93 | this.getRadius = function() { | 101 | getFillMaterial: { |
94 | return this._radius; | 102 | value: function() { |
95 | }; | 103 | return this._fillMaterial; |
104 | } | ||
105 | }, | ||
96 | 106 | ||
97 | this.setRadius = function(r) { | 107 | setFillMaterial: { |
98 | this._radius = r; | 108 | value: function(m) { |
99 | }; | 109 | this._fillMaterial = m; |
110 | } | ||
111 | }, | ||
100 | 112 | ||
101 | this.getWorld = function() { | 113 | getRadius: { |
102 | return this._world; | 114 | value: function() { |
103 | }; | 115 | return this._radius; |
116 | } | ||
117 | }, | ||
104 | 118 | ||
105 | this.setWorld = function(w) { | 119 | setRadius: { |
106 | this._world = w; | 120 | value: function(r) { |
107 | }; | 121 | this._radius = r; |
122 | } | ||
123 | }, | ||
108 | 124 | ||
109 | this.getInnerRadius = function() { | 125 | getInnerRadius: { |
110 | return this._innerRadius; | 126 | value: function() { |
111 | }; | 127 | return this._innerRadius; |
128 | } | ||
129 | }, | ||
112 | 130 | ||
113 | this.setInnerRadius = function(r) { | 131 | setInnerRadius: { |
114 | this._innerRadius = r; | 132 | value: function(r) { |
115 | }; | 133 | this._innerRadius = r; |
134 | } | ||
135 | }, | ||
116 | 136 | ||
117 | this.getStrokeStyle = function() { | 137 | getStrokeStyle: { |
118 | return this._strokeStyle; | 138 | value: function() { |
119 | }; | 139 | return this._strokeStyle; |
120 | this.setStrokeStyle = function(s) { | 140 | } |
121 | this._strokeStyle = s; | 141 | }, |
122 | }; | ||
123 | 142 | ||
124 | this.getWidth = function() { | 143 | setStrokeStyle: { |
125 | return this._width; | 144 | value: function(s) { |
126 | }; | 145 | this._strokeStyle = s; |
146 | } | ||
147 | }, | ||
127 | 148 | ||
128 | this.setWidth = function(w) { | 149 | getWidth: { |
129 | this._width = w; | 150 | value: function() { |
130 | }; | 151 | return this._width; |
152 | } | ||
153 | }, | ||
131 | 154 | ||
132 | this.getHeight = function() { | 155 | setWidth: { |
133 | return this._height; | 156 | value: function(w) { |
134 | }; | 157 | this._width = w; |
158 | } | ||
159 | }, | ||
135 | 160 | ||
136 | this.setHeight = function(h) { | 161 | getHeight: { |
137 | this._height = h; | 162 | value: function() { |
138 | }; | 163 | return this._height; |
164 | } | ||
165 | }, | ||
139 | 166 | ||
140 | this.geomType = function() { | 167 | setHeight: { |
141 | return this.GEOM_TYPE_CIRCLE; | 168 | value: function(h) { |
142 | }; | 169 | this._height = h; |
170 | } | ||
171 | }, | ||
143 | 172 | ||
144 | /////////////////////////////////////////////////////////////////////// | 173 | geomType: { |
145 | // Methods | 174 | value: function() { |
146 | /////////////////////////////////////////////////////////////////////// | 175 | return this.GEOM_TYPE_CIRCLE; |
176 | } | ||
177 | }, | ||
147 | 178 | ||
148 | /////////////////////////////////////////////// |