
/* 
 * математический тригонометрический ускоритель
 * (грибы приносим с собой)
 */

    function bsMathGetPath(x,y,cx,cy){
        var r=Math.sqrt((x-cx)*(x-cx)+(y-cy)*(y-cy));
        return r;
    }
    
    function bsMathGetLen(r,alpha){
        var l=Math.sqrt(2*r*(1-Math.cos(alpha)));
        return l;
    }

    function bsMathGetRotPoint(xc,yc,x1,y1,alpha){
        var r=bsMathGetPath(xc,yc,x1,y1);
        var x=bsMathMod(xc-x1);
        var y=bsMathMod(yc-y1);
        var beta=Math.atan(y/x);
        var x2=r*Math.cos(alpha+beta);
        var y2=r*Math.sin(alpha+beta);
        return '[ x2='+x2+' y2='+y2+' ]';
    }

    function bsMathMod(x){
        if( x>=0 ) {
            return x;
        }else{
            return -x;
        }
    }

    function bsMathRound(d,p){
    	p=Math.pow(10,p);
    	d=Math.round(d*p)/p;
    	return d;
	}
	
	function bsMathDec2Hex(d, padding) {
		var hex = Number(d).toString(16);
		padding = typeof (padding) === "undefined" || padding === null ? padding = 2 : padding;

		while (hex.length < padding) {
			hex = "0" + hex;
		}

		return hex;
	}

