Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Принадлежит ли точка фигуре? помогите с написанием функции алгоритмом 
:(
    Опции темы
Sergio
Дата 26.6.2011, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Здравствуйте,

помогите пожалуйста с написанием функции:
Код

- (BOOL)isFigure:(Figure)figure containsPoint:(CGPoint)point;


Нужно узнать принадлежит ли точка фигуре? Фигура ввиде правильного ромба.
Действие происходит на осях X, Y

Заранее спасибо.
PM MAIL ICQ   Вверх
_Y_
Дата 26.6.2011, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Что-то я геометрию школьную забыл. Бывают разве ромбы "неправильные"?

Вообще же методов должно быть немеряно. Тем более, что ромб - фигура выпуклая и, поэтому, все с ней просто.

Например так: 
  • Соединяем точку отрезком с центром ромба (или с любой другой точкой внутри ромба - не важно).
  • Проверяем пересекается ли этот отрезок с каким-нибудь отрезком, образующим стороны ромба.
  • Если не пересекается - точка внутри.



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Skevalt
Дата 26.6.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.11.2006

Репутация: нет
Всего: 3



Можно сделать следующим образом: см. рис.
Тогда условием принадлежности точки фигуре будет: (Yp <= u(Xp)) AND (Yp >= d(Xp))
Также, можно определять ромб и не через длины диагоналей, а через уравнение прямой, проходящей через две точки, откуда необходимо найти коэффициент угла наклона b/a.
p.s. Ромб можно перенести в любую точку, используя параллельный перенос.
p.p.s. Если совсем не заморачиваться, то взять код здесь

Это сообщение отредактировал(а) Skevalt - 26.6.2011, 18:45
PM MAIL   Вверх
Dottik
Дата 1.7.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 13.10.2006
Где: Ukraine

Репутация: 1
Всего: 2



Или же соеденить точку с 4-мя вершинами => получаем 4 треугольника => если сумма их площадей ровна площаде ромба то точка внутри.
PM MAIL   Вверх
_Y_
Дата 4.7.2011, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Мне понравилось. Давайте сделаем из этой темы флейм на тему сколькими методами можно решить данную задачу smile  Думаю неслабая ветка получится.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1330 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.