Друзья, подскажите как быть.
Есть объект ( в моем случае ромб). Объект подвижный. Мне необходимо определять его тень относительно источника света.
в приложении мои потуги, ниже код.
Проблема заключается в том, что в одном моменте радианы меняют знак и угол, который должен быть крайним , перестаёт быть таковым.

Код:
var map = new Object();
map.cellw=80;
map.cellh=40;
function getAngles(cell,robo){
x0 = robo._x
y0 = robo._y;
x1 = cell._x+map.cellw/2
y1 = cell._y;
x2 = cell._x-map.cellw/2
y2 = cell._y;
x3 = cell._x
y3 = cell._y+map.cellh/2;
x4 = cell._x
y4 = cell._y-map.cellh/2;
x5 = cell._x
y5 = cell._y;
a1=Math.atan2(y1-y0,x1-x0);
a2=Math.atan2(y2-y0,x2-x0);
a3=Math.atan2(y3-y0,x3-x0);
a4=Math.atan2(y4-y0,x4-x0);
_root.txt.text =a1+'\n'+a2+"\n"+a3+'\n'+a4;
mid = Math.atan2(y5-y0,x5-x0);
dest = Math.sqrt(Math.pow(x5-x0,2)+Math.pow(y5-y0,2))
a1=a1;
a2=a2;
a3=a3;
a4=a4;
max1 = Math.max(a1,a2);
max2 = Math.max(a3,a4);
max = Math.max(max1,max2);
min1 = Math.min(a1,a2);
min2 = Math.min(a3,a4);
min = Math.min(min1,min2);
_root.dr.clear()
_root.dr.lineStyle(5, 0xFF00FF, 100);
_root.dr.moveTo(x0,y0);
_root.dr.lineTo(x0+dest*Math.cos(min),y0+dest*Math.sin(min));
_root.dr.moveTo(x0,y0);
_root.dr.lineTo(x0+dest*Math.cos(max),y0+dest*Math.sin(max));
_root.dr.moveTo(x0,y0);
_root.dr.lineTo(x0+dest*Math.cos(mid),y0+dest*Math.sin(mid));
return({max:max,min:min});
}
function go(){
_root.onMouseMove= function(){
_root.s1._x=_root._xmouse;
_root.s1._y=_root._ymouse;
getAngles(_root.s1,_root.s0);
}
}
go();