Показать сообщение отдельно
Старый 14.02.2008, 08:06
alrusdi вне форума Посмотреть профиль Отправить личное сообщение для alrusdi Найти все сообщения от alrusdi
  № 3  
Ответить с цитированием
alrusdi

Регистрация: Nov 2005
Сообщений: 75
iNils, спасибо!
Для того чтобы это соответсвовало условию задачи одну строчку еще добавить надо
Код:
function drawArc(mc:MovieClip, x0:Number, y0:Number, x1:Number, y1:Number, x2:Number, y2:Number){	
	var a1:Number = Math.atan2 ((y2 - y0), (x2 - x0));
	var a2:Number = Math.atan2 ((y1 - y0), (x1 - x0));
	var r = Math.sqrt ((x2 - x0) * (x2 - x0) + (y2 - y0) * (y2 - y0));
	var a:Number = a2 - a1;
	if (a<0){a+=Math.PI*2;};
	var step:Number = 10;
	var as:Number = a / step;
	
	mc.lineStyle (0, 0x0000FF);
	mc.moveTo (x2, y2);
	
	for (var i = 0; i < step + 1; i++) {
		var u:Number = (a1 + as * i);
		var x:Number = x0 + r * Math.cos (u);
		var y:Number = y0 + r * Math.sin (u);
		mc.lineTo (x, y);
	}
}
Функция Math.atan2 это тот же арктангенс, только с разделением параметров, проверкой области допустимых значений и сменой четверти в тех местах где функция меняется на кофункцию. Для тех кому нужна ее реализация вот она:
Код:
function atan2(dy, dx){
	if (dy==0){
		if (dx>0){
			return Math.PI/2;
			}else{
			return -Math.PI/2;
		};
	};
	if (dx<0 && dy>0){ return Math.atan(dy/dx)+Math.PI;}
	if (dx<0 && dy<0){ return Math.atan(dy/dx)-Math.PI;}
	return Math.atan(dy/dx);
}