First thing to do is to clarify your code.
1) you don't need to fill the array in reverse order.
2) use atan2 - i didn't get your way of dealing with radians...
3) cache the array element that you will re-use.
4) do not create one sort function on each sort.
5) if you sort in the right order, you don't need to display in reverse order.
Once situation is clearer, i find strange that you are using fields 3, 5 or 6 for the y of your point. I would say just one offset for the y data is enough ;-)
function sortByAngle(center) {
for (var i = 0 ; i<viewFeild.length ; i++) {
var thisField = viewFeild[i] ;
thisField[2] = Math.atan2( thisField[3] - center.y)
, (thisField[0] - center.x));
};
viewFeild.sort(sortOnSecondItem);
}
function fillView(pos) {
for (var i = 0 ; i<viewFeild.length ; i++) {
var thisField = viewFeild[i] ;
var nextField = (i==viewFeild.length-1) ?
viewFeild[0]
: viewFeild[i+1] ;
ctx.beginPath();
ctx.moveTo(pos.x, pos.y);
ctx.lineTo(thisField[0] + pos.x, thisField[5] + pos.y);
ctx.lineTo(nextField[0] + pos.x, nextField[6] + pos.y);
ctx.closePath();
ctx.fillStyle = "rgba(100, " + 35 * i + ", 100, .6)";
ctx.fill();
};
}
function sortOnSecondItem(a,b) { return a[2] - b[2] }