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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.11.2009, 18:15
kris.o вне форума Посмотреть профиль Отправить личное сообщение для kris.o Найти все сообщения от kris.o
  № 1  
Ответить с цитированием
kris.o

Регистрация: Nov 2009
Сообщений: 2
По умолчанию Попадание в область объединения 2-х прямоугольников

Речь о Rectangle Movieclips.
Есть два прямоугольника (на картинке синий и красный). Как можно определить попадает ли третий в область их пересечения объединения или нет?

Идея такая - объединить массивы координат прямоугольников. И проверить принадлежит ли массив координат третьего прямоугольника этому объединенному.

[IMG]http://img24.**************/img24/391/rect.gif[/IMG]

Наверное, существует более простое и менее ресурсозатратное решение, которое мне не удалось найти?

Заранее спасибо за совет.


Последний раз редактировалось kris.o; 13.11.2009 в 11:39.
Старый 12.11.2009, 18:28
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Не уверен, что правильно понимаю... но, если делать так:
- берем верхнюю-левую точку зеленого прямоугольника, проверяем, принадлежит ли она хотя бы одному из синий + красный, если да, проверяем следующую вершину, если нет - не принадлежит.
__________________
Hell is the possibility of sanity

Старый 13.11.2009, 11:38
kris.o вне форума Посмотреть профиль Отправить личное сообщение для kris.o Найти все сообщения от kris.o
  № 3  
Ответить с цитированием
kris.o

Регистрация: Nov 2009
Сообщений: 2
Прошу прощения, ошибся в формулировке - не область пересечения, а область объединения.
В этом случае возможен вариант, когда все четрые точки будут лежать внутри общей области, при этом он сам будет вылезать за эту область.

[IMG]http://img208.**************/img208/4584/rect2.gif[/IMG]

Старый 13.11.2009, 12:38
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
т.е. if (C c A u B )
дело в том, что множество A u B - не является прямоугольником, соответственно вхождение в него нужно рассчитывать по другим формулам.
например численным методом: дискретизировать множества С и AB и проверить условие : каждый dC входит в какой нибудь dAB,
либо упрощаем: каждый dC входит или в А или в B. степень дискретизации C зависит от необходимой точности.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 13.11.2009 в 12:59.
Старый 13.11.2009, 12:42
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 5  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
может не самый оптимальный вариант, но вариант:
для каждой стороны зеленого прямоугольника ищем точки пересечения с другими. отрезок разбивается на части, добавляем к этим точкам пересечения еще середины отрезков. Добавляем вершины зеленого прямоугольника. После этого проверяем каждую из полученных точек на вхождение в любой из прямоугольников.

Старый 13.11.2009, 14:06
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
еще вариант: для AB - создаём массив внешних отрезков
тогда С входит в AB если ни один из отрезков C не пересекает ни один из внешних отрезков AB.
Изображения
 
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 13.11.2009 в 14:11.
Старый 13.11.2009, 14:09
proxiServer вне форума Посмотреть профиль Отправить личное сообщение для proxiServer Найти все сообщения от proxiServer
  № 7  
Ответить с цитированием
proxiServer
 
Аватар для proxiServer

Регистрация: Jun 2006
Сообщений: 400
Я бы использовал параметрическое уравнение прямой заданной двумя точками. Каждое ребро - объект. На каждом ребре отмечаю точку пересечения. У точки пересечения должны быть параметры "с кем пересекся" и "при пересечении ушел или вошел". Дальше цикл по контуру зеленого прямоугольника. Если я два раза вышел из прямоугольника при пересечении и ни разу не зашел значит я вне области.

Прелесть параметрическое уравнение прямой в том, что можно любую точку отрезка задать одним числом от 0 до 1. Где 0 это первая точка, а 1 вторая. Можно точки пересечения упорядочивать в направлении по отрезку от начальной к конечной точке. Вообщем удобно.


Последний раз редактировалось proxiServer; 13.11.2009 в 14:27.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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