2 * @author mr.doob / http://mrdoob.com/
3 * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as
6 var Plane = function ( width
, height
, segments_width
, segments_height
) {
8 THREE
.Geometry
.call( this );
11 width_half
= width
/ 2,
12 height_half
= height
/ 2,
13 gridX
= segments_width
|| 1,
14 gridY
= segments_height
|| 1,
17 segment_width
= width
/ gridX
,
18 segment_height
= height
/ gridY
;
21 for( iy
= 0; iy
< gridY1
; iy
++ ) {
23 for( ix
= 0; ix
< gridX1
; ix
++ ) {
25 var x
= ix
* segment_width
- width_half
;
26 var y
= iy
* segment_height
- height_half
;
28 this.vertices
.push( new THREE
.Vertex( new THREE
.Vector3( x
, - y
, 0 ) ) );
34 for( iy
= 0; iy
< gridY
; iy
++ ) {
36 for( ix
= 0; ix
< gridX
; ix
++ ) {
38 var a
= ix
+ gridX1
* iy
;
39 var b
= ix
+ gridX1
* ( iy
+ 1 );
40 var c
= ( ix
+ 1 ) + gridX1
* ( iy
+ 1 );
41 var d
= ( ix
+ 1 ) + gridX1
* iy
;
43 this.faces
.push( new THREE
.Face4( a
, b
, c
, d
) );
45 new THREE
.UV( ix
/ gridX
, iy
/ gridY
),
46 new THREE
.UV( ix
/ gridX
, ( iy
+ 1 ) / gridY
),
47 new THREE
.UV( ( ix
+ 1 ) / gridX
, ( iy
+ 1 ) / gridY
),
48 new THREE
.UV( ( ix
+ 1 ) / gridX
, iy
/ gridY
)
55 this.computeCentroids();
56 this.computeFaceNormals();
57 this.sortFacesByMaterial();
61 Plane
.prototype = new THREE
.Geometry();
62 Plane
.prototype.constructor = Plane
;