Показать сообщение отдельно
Старый 08.08.2014, 17:13
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 5  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
Не уверен, что в тему, но возможно будет полезно:
Код AS3:
public static function isIntersection(a1:Point, a2:Point, b1:Point, b2:Point, intersectPoint:Point = null):Boolean {
	var de:Number = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);
	if(de != 0.0) {
		var u0:Number = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x) / de;
		var u1:Number = (b1.x - a1.x) * (a2.y - a1.y) - (b1.y - a1.y) * (a2.x - a1.x) / de; 
		if((u0 >= 0.0) && (u0 <= 1.0) && (u1 >= 0.0) && (u1 <= 1.0)) {
			if(intersectPoint != null) {
				intersectPoint.x = a1.x + u0 * (a2.x - a1.x);
				intersectPoint.y = a1.y + u0 * (a2.y - a1.y);
			}
			return true;
		}
	}
	return false;
}
a1 - а2 - первый отрезок.
б1 - б2 - второй.
Ф-ция возвращает факт пересечения. Доп. аргументом можно задать точку, куда запишутся координаты пересечения.


Последний раз редактировалось nuToH; 11.08.2014 в 11:22.