1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /**
- * @author kile / http://kile.stravaganza.org/
- */
- var Cylinder = function (numSegs, topRad, botRad, height, topOffset, botOffset) {
- THREE.Geometry.call(this);
-
- var scope = this, i;
- // VERTICES
- // Top circle vertices
- for (i = 0; i < numSegs; i++) {
-
- v(
- Math.sin(2 * 3.1415 * i / numSegs)*topRad,
- Math.cos(2 * 3.1415 * i / numSegs)*topRad,
- 0);
- }
- // Bottom circle vertices
- for (i = 0; i < numSegs; i++) {
-
- v(
- Math.sin(2 * 3.1415 * i / numSegs)*botRad,
- Math.cos(2 * 3.1415 * i / numSegs)*botRad,
- height);
- }
-
-
- // FACES
-
- // Body
- for (i = 0; i < numSegs; i++) {
-
- f4(i, i + numSegs, numSegs + (i + 1) % numSegs, (i + 1) % numSegs, '#ff0000');
- }
-
- // Bottom circle
- if (botRad != 0) {
-
- v(0, 0, -topOffset);
-
- for (i = numSegs; i < numSegs + (numSegs / 2); i++) {
-
- f4(2 * numSegs,
- (2 * i - 2 * numSegs) % numSegs,
- (2 * i - 2 * numSegs + 1) % numSegs,
- (2 * i - 2 * numSegs + 2) % numSegs);
- }
- }
- // Top circle
- if (topRad != 0) {
-
- v(0, 0, height + topOffset);
-
- for (i = numSegs + (numSegs / 2); i < 2 * numSegs; i++) {
-
- f4( (2 * i - 2 * numSegs + 2) % numSegs + numSegs,
- (2 * i - 2 * numSegs + 1) % numSegs + numSegs,
- (2 * i - 2 * numSegs) % numSegs+numSegs,
- 2 * numSegs + 1);
- }
- }
-
- function v(x, y, z) {
-
- scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
- }
- function f4(a, b, c, d) {
-
- scope.faces.push( new THREE.Face4(a, b, c, d) );
- }
- }
- Cylinder.prototype = new THREE.Geometry();
- Cylinder.prototype.constructor = Cylinder;
|