File: src/shapes/Sphere.js
- module.exports = Sphere;
-
- var Shape = require('./Shape');
- var Vec3 = require('../math/Vec3');
-
- /**
- * Spherical shape
- * @class Sphere
- * @constructor
- * @extends Shape
- * @param {Number} radius The radius of the sphere, a non-negative number.
- * @author schteppe / http://github.com/schteppe
- */
- function Sphere(radius){
- Shape.call(this);
-
- /**
- * @property {Number} radius
- */
- this.radius = radius!==undefined ? Number(radius) : 1.0;
- this.type = Shape.types.SPHERE;
-
- if(this.radius < 0){
- throw new Error('The sphere radius cannot be negative.');
- }
-
- this.updateBoundingSphereRadius();
- }
- Sphere.prototype = new Shape();
- Sphere.prototype.constructor = Sphere;
-
- Sphere.prototype.calculateLocalInertia = function(mass,target){
- target = target || new Vec3();
- var I = 2.0*mass*this.radius*this.radius/5.0;
- target.x = I;
- target.y = I;
- target.z = I;
- return target;
- };
-
- Sphere.prototype.volume = function(){
- return 4.0 * Math.PI * this.radius / 3.0;
- };
-
- Sphere.prototype.updateBoundingSphereRadius = function(){
- this.boundingSphereRadius = this.radius;
- };
-
- Sphere.prototype.calculateWorldAABB = function(pos,quat,min,max){
- var r = this.radius;
- var axes = ['x','y','z'];
- for(var i=0; i<axes.length; i++){
- var ax = axes[i];
- min[ax] = pos[ax] - r;
- max[ax] = pos[ax] + r;
- }
- };
-
-