I'm currently having trouble understanding the math behind flicking and object and how to execute it in javascript..

I currently am using:

Update Function
var time = this.launchTimer.delta();
        
        var ball = this.getEntitiesByType(EntityPlayer)[0];
        if (ig.input.pressed('leftButton')){
            this.launchTimer.reset();
            xStart = nX;
            yStart = nY;
        }
        if (ig.input.released('leftButton')){
            xEnd = nX;
            yEnd = nY;
            yresult = (yEnd - yStart);
            xresult = xEnd - xStart;
            console.log("L " + xresult);
            ball.launch(xresult, yresult);
        }

var nX;
var nY;
var xStart;
var xEnd;
var xresult;

var yStart;
var yEnd;
var yresult;
Canvas.addEventListener('touchstart', function(event){
    ig.input.actions['mouse']=true;
    nX=event.touches[0].pageX;
    nY=event.touches[0].pageY;
}, true);
Canvas.addEventListener('touchmove', function(event){
    ig.input.actions['mouse']=true;
    nX=event.touches[0].pageX;
    nY=event.touches[0].pageY;  
}, false);
Canvas.addEventListener('touchend', function(event){
    ig.input.released['mouse'] = true;
    nX=event.touches[0].pageX;
    nY=event.touches[0].pageY;    
},false);

My issues are in:
The Angle and how to calculate it
The Speed, am I calculating it correctly?
Acceleration, the entity starts slow and accels, is there a way to have it start faster and slow down with the friction?