Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

Кто сделает меньше ?   Найти похожие ветки 

 
Karros ©   (2003-03-07 21:54) [0]

Hi, программеры!! Вот я тут реализовывал процедурку проверки столкновения двух прямоугольников (она проверяет заходят они друг на друга или нет), и она у меня получилась около 40 строк, и вот я подумал что она слишком большая, может у кого то в меньше строк получалось, а?


 
vuk ©   (2003-03-07 21:58) [1]

Types.IntersectRect?


 
Karros ©   (2003-03-07 22:04) [2]

Чаво?


 
VaS ©   (2003-03-07 22:06) [3]

Karros:

BOOL IntersectRect(
LPRECT lprcDst, // intersection buffer
CONST RECT *lprcSrc1, // first rectangle
CONST RECT *lprcSrc2 // second rectangle
);

велосипеды, велосипеды....


 
vuk ©   (2003-03-07 22:09) [4]

>Чаво?
Таво! :o) Готовое есть.


 
Karros ©   (2003-03-07 22:13) [5]

Вот в хелпах роюсь, ищу эту хрень….


 
Karros ©   (2003-03-07 22:21) [6]

Чо надо подставлять в качестве первого параметра (остальные два понятно)?


 
nikkie ©   (2003-03-08 00:45) [7]

>vuk, Karros
оно, конечно, хорошо WinAPI знать, но ведь в теме не написано, что платформа - windows :p

а вообще-то, хорошая задачка для разминки мозгов или для изучающих программирование.

соображение номер 1: прямоугольники пересекаются тогда и только тогда, когда пересекаются их проекции на оси координат.

соображение номер 2: из двух отрезков на прямой возьмем тот, начало которого находится левее. тогда отрезки пересекаются тогда и только тогда, когда начало второго отрезка находится внутри первого отрезка.

function SegmentIntersect(a, b, c, d: Double) : Boolean;
begin
Result := ((a <= c) and (c <= b)) or ((c <= a) and (a <= d))
end;

function RectIntersect(rect1, rect2: TRect) : Boolean;
begin
Result := SegmentIntersect(rect1.Left, rect1.Right, rect2.Left, rect2.Right)
and SegmentIntersect(rect1.Top, rect1.Bottom, rect2.Top, rect2.Bottom);
end;

тестироваnm ломает, но думаю, что будет работать правильно :)
и уж всяко короче 40 строк. :))


 
vuk ©   (2003-03-08 01:37) [8]

>оно, конечно, хорошо WinAPI знать, но ведь в теме не написано,
>что платформа - windows :p
Повторяю еще раз где искать: Types.IntersectRect. Там без привязке к платформе. :-P



 
Karros ©   (2003-03-08 18:39) [9]

> Karros: vuk - пасибо!



Страницы: 1 вся ветка

Текущий архив: 2003.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-64069
Юный_программер
2003-03-09 22:08
2003.03.20
Если делать свой планировщик, то накладно ли использовать Applica


1-64127
OlegM
2003-03-11 08:06
2003.03.20
Прозрачный фон у текста


1-64186
Strij
2003-03-08 09:08
2003.03.20
Как сделать, чтобы вместо sqrt(t) можно было произвольную функцию


14-64277
VictorT
2003-03-03 13:29
2003.03.20
Поругайте :)


1-64157
Passlight
2003-03-07 13:57
2003.03.20
Как узнать, что поток (TThread) завершил работу?