Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
1-64155
Baxs/B
2003-03-07 10:21
2003.03.20
Кое что ещё про компоненты


1-64193
ден555
2003-03-08 14:34
2003.03.20
Как открыть файл?


3-63979
soware
2003-02-28 10:14
2003.03.20
TXQuery.SQL


3-63962
Olivka
2003-02-22 21:49
2003.03.20
транзакции в IB (Firebird)


14-64343
ZeroDivide
2003-03-04 16:22
2003.03.20
Да здравствуют отечественные военные кулеры!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский