Показать сообщение отдельно
Старый 02.12.2010, 10:39
Aber вне форума Посмотреть профиль Отправить личное сообщение для Aber Найти все сообщения от Aber
  № 12  
Ответить с цитированием
Aber
 
Аватар для Aber

Регистрация: Dec 2010
Адрес: Воронеж
Сообщений: 26
Отправить сообщение для Aber с помощью ICQ
Сегодня вечером подумаю что можно сделать.
С кругами все конечно идеально, но алгоритм сложноват получается.
Я пол ночи бился чтоб проверку на пересечение придумать.
Вот кстати код. Он проверяет пересечение 2 линий, но если они пересекаются своими концами, то считает что не пересекаются. Что мне и нужно было.
Со множеством линий пока не тестировал.

Код AS3:
var xx:Array = new Array(5);
var yy:Array = new Array(5);
var Z;
var Ca;
var Cb;
var Ua;
var Ub;
 
xx[1]=10; yy[1]=10;
xx[2]=200; yy[2]=200;
xx[3]=10; yy[3]=200;
xx[4]=200; yy[4]=10;
//Прорисовываем для наглядности
graphics.clear();
graphics.lineStyle(5, 0);
graphics.moveTo(xx[1], yy[1]);
graphics.lineTo(xx[2], yy[2]);
graphics.moveTo(xx[3], yy[3]);
graphics.lineTo(xx[4], yy[4]);
//*********
Ca = (xx[4]-xx[3])*(yy[1]-yy[3]) - (yy[4]-yy[3])*(xx[1]-xx[3]);
Cb = (xx[2]-xx[1])*(yy[1]-yy[3]) - (yy[2]-yy[1])*(xx[1]-xx[3]);
Z = (yy[4]-yy[3])*(xx[2]-xx[1]) - (xx[4]-xx[3])*(yy[2]-yy[1]);
if (Z != 0) 
{
	Ua = Ca/Z;
	Ub = Cb/Z;
	if ((Ua>0) && (Ua<1) && (Ub>0) && (Ub<1) )
	{
		trace("Пересекается")
	}
}