Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > FAQ и уроки

Ответ
 
Опции темы
Старый 04.08.2011, 16:34   #1
Glauberov
AnyKey`щик
 
Регистрация: 04.08.2011
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Пересечение линий

Как сделать проверку на пересечение линий?
(Offline)
 
Ответить с цитированием
Старый 04.08.2011, 16:46   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Пересечение линий

Тебе нужны математические функции которые выдадут пересекаются ли линии?
Гугля имеет свои результаты, но если ты не смог нагуглить - попробуй ещё.

Тут ещё ссылка давно лежит.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Glauberov (04.08.2011)
Старый 06.08.2011, 00:28   #3
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Пересечение линий


(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (07.08.2011)
Старый 28.11.2011, 15:52   #4
Greymem
Нуждающийся
 
Регистрация: 31.05.2010
Сообщений: 63
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Пересечение линий

'x11 координаты x первой точки первой линии
'y11 координаты y первой точки первой линии

'x12 координаты x второй точки первой линии
'y12 координаты y второй точки первой линии

'x21 координаты x первой точки второй линии
'y21 координаты y первой точки второй линии

'x22 координаты x второй точки второй линии
'Y22 координаты y второй точки второй линии


Function LinesCrossing:Int(x11:Int, y11:Int, x12:Int, y12:Int, x21:Int, y21:Int, x22:Int, y22:Int)
Local d:Float;
Local d1:Float;
Local d2:Float;
Local t1:Float;
Local t2:Float;
Local x:Float;
Local y:Float;
Local Collision:Int = False

' решаем систему методом Крамера
d = (x12 - x11) * (y21 - y22) - (x21 - x22) * (y12 - y11) ;

If (d = 0) Then Return False;

d1 = (x21 - x11) * (y21 - y22) - (x21 - x22) * (y21 - y11) ;
d2 = (x12 - x11) * (y21 - y11) - (x21 - x11) * (y12 - y11) ;

t1 = d1 / d;
t2 = d2 / d;

If (t1 >= 0 And t1 <= 1 And t2 >= 0 And t2 <= 1) Then
x = t1 * x12 + (1 - t1) * x11;
y = t1 * y12 + (1 - t1) * y11;
Print("Отрезки пересекаются в точке " + X + " " + Y) ;
Collision = True;
Else
Print("Не пересекаются") ;
EndIf;
Return Collision
End Function

(C)Пёрто с форума по PHP
Извините, не помню источника
__________________
Мозги... у них есть метод "Storm"
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com