Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 16.01.2007, 18:38
petrochenko1981 вне форума Посмотреть профиль Отправить личное сообщение для petrochenko1981 Найти все сообщения от petrochenko1981
  № 3  
Ответить с цитированием
petrochenko1981

Регистрация: Oct 2005
Сообщений: 106
//Функция, которая проверяет пересечение двух линий>>>>---------------------------
Код:
function Peresechenie(x11,y11,x12,y12,x21,y21,x22,y22 : Number) : Number {
var s,xx,yy,t1,t2,t : Number = null;
var D,D1,D2 : Number = null;
s=0;
D=(y12-y11)*(x21-x22)-(y21-y22)*(x12-x11);
D1=(y21-y11)*(x21-x22)-(y21-y22)*(x21-x11);
D2=(y12-y11)*(x21-x11)-(y21-y11)*(x12-x11);
if (D<>0){
	t1=D1/D;
	t2=D2/D;
	if ((t1<=1) && (t1>=0) && (t2>=0) && (t2<=1)){
		s=1;
		xx=x11+(x12-x11)*t1;
		yy=y11+(y12-y11)*t1;
	}
}else {	
	if ((D1==0) && (D2==0)){
		if (x11<>x12){
			t1=(x21-x11)/(x12-x11);
			t2=(x22-x11)/(x12-x11);
		}else{
			if (y11<>y12){
				t1=(y21-y11)/(y12-y11);
				t2=(y22-y11)/(y12-y11);
			}
		}
		if (t1>t2){
			t=t2;
			xx=x21;
			yy=y21;
			t2=t1;
			x21=x22;
			y21=y22;
			t1=t
			x22=xx;
			y22=yy;
		}
		if (t1<0){			
			if (t2>=1){
				s=2;
			}else{
				if (t2>0){
					s=2;
					x12=x22;
					y12=y22;
				}else{
					if (t2==0){
						s=1;
						xx=x11;
						yy=y11;
					}
				}
			}
		}else{
			if (t1<=1){
				if (t1==1){
					s=1;
					xx=x12;
					yy=y12;
				}
				else{
					s=2;
					x11=x21;
					y11=y21;
					if (t2>=1){
						x12=x22;
						y12=y22;
					}
				}
			}
		}
	}	
}
	return s;
}
x11,y11,x12,y12,x21,y21,x22,y22 - координаты отрезков, если return s != 0, то значит пересекаются или один отрезок продолжает другой. Ну потесть и все понятнро будет, s может только трем значения равняться 0,1,2


Последний раз редактировалось iNils; 16.01.2007 в 19:01.
Создать новую тему   Часовой пояс GMT +4, время: 05:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:04.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.