#

API Docs for: 0.6.1
Show: Inherited Protected Private Deprecated

# 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;
        }
    };