Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Игры разума
Перезагрузить страницу Прямоугольник и точка как к ним пройти
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
IL_Agent IL_Agent вне форума
Member
 
Аватар для IL_Agent
 
Сообщений: 2,015
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.07.2005
По умолчанию Прямоугольник и точка как к ним пройти - 28.02.2006, 21:25

Нужно узнать, находится ли заданная точка внутри заданного прямоугольника. Какой способ самый быстрый ?
Ответить с цитированием
  (#2 (permalink)) Старый
kost kost вне форума
Member
 
Сообщений: 1,081
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2004
По умолчанию Re: Прямоугольник и точка - 28.02.2006, 21:37

Цитата:
Originally posted by IL_Agent
[b]Нужно узнать, находится ли заданная точка внутри заданного прямоугольника. Какой способ самый быстрый ?
По-моему проще подумать о том, какой способ самый медленный)))
Хотя смотря как задан прямоугольник.

Допустим дано четыре прямые. f1, f2, f3, f4, где fn - функция вида Ax+By+C. Тогда нам нужно чтоб для противоположных сторон значение функций в данной точке было разных знаков. Вот и все.

З.Ы> Может дружно в алгоритмы полетим?
Ответить с цитированием
  (#3 (permalink)) Старый
IL_Agent IL_Agent вне форума
Member
 
Аватар для IL_Agent
 
Сообщений: 2,015
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.07.2005
По умолчанию 28.02.2006, 22:35

это для любого четырёхугольника.
Прямоугольник ABCD задан высотой AB, длинной AD(AB-"левая" сторона,AD-"нижняя"), координатами точки A, углом между AD и осью Х.[/img]
Ответить с цитированием
  (#4 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 11.03.2006, 23:20

тогда быстрее всего через напрявляющие вектора.

Вот, хочется попробовать еще такой алгоритм: Сумма расстояний от точки до двух противоположных вершин должна быть меньше длина+ширина.
Ответить с цитированием
  (#5 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 12.03.2006, 13:37

Цитата:
Вот, хочется попробовать еще такой алгоритм: Сумма расстояний от точки до двух противоположных вершин должна быть меньше длина+ширина.
Не-е-е-е-е. Не пойдёт.


импортирован с progz.ru
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 12.03.2006, 13:48

Пытаюсь подобрать пример, где не работает - не получается. Может, предложишь?
Ответить с цитированием
  (#7 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 12.03.2006, 13:55

Только шас дошло, что если проверять по обоим парам противоположных вершин, то мой пример не работает.

В любом случае нужно мат. обоснование.


импортирован с progz.ru
Ответить с цитированием
  (#8 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 12.03.2006, 14:00

Хорошо. Сейчас попробую придумать.
Хотя я наверное не прав.
Сумма расстояний до двух точек постоянна - это эллипс. Получается пересечение двух эллипсов. Это вряд ли прямоугольник.
Ответить с цитированием
  (#9 (permalink)) Старый
kost kost вне форума
Member
 
Сообщений: 1,081
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.10.2004
По умолчанию 12.03.2006, 21:30

Прямоугольник:
A(0;0) B(0;10) C(5;10) D(5;0)

Точка E(6;9)
Ответить с цитированием
  (#10 (permalink)) Старый
pEtr0 pEtr0 вне форума
Member
 
Сообщений: 70
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.02.2006
По умолчанию 13.03.2006, 12:47

Цитата:
Originally posted by IL_Agent
[b]Прямоугольник ABCD задан высотой AB, длинной AD(AB-"левая" сторона,AD-"нижняя"), координатами точки A, углом между AD и осью Х.
Пусть точка А в начале координат, alfa - угол между AD и осью Ох,
(x,y) точка которую проверяем.

Если в этих обозначениях написать математически, то получится что если точка находится внутри прямоугольника должны выполнятся оба условия:
0 <= x*cos(alfa) + y*sin(alfa) <= AD
0 <= -x*sin(alfa) + y*cos(alfa) <= AB

Возможно это можно и упростить...
Ответить с цитированием
  (#11 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 13.03.2006, 20:22

Цитата:
Originally posted by Fuud
[b]Хорошо. Сейчас попробую придумать.
Хотя я наверное не прав.
Сумма расстояний до двух точек постоянна - это эллипс. Получается пересечение двух эллипсов. Это вряд ли прямоугольник.
Да. я об этом задумался только когда гулять пошёл. - Поэтому сразу не написал.


импортирован с progz.ru
Ответить с цитированием
  (#12 (permalink)) Старый
IL_Agent IL_Agent вне форума
Member
 
Аватар для IL_Agent
 
Сообщений: 2,015
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.07.2005
По умолчанию 12.11.2006, 21:41

Цитата:
Пусть точка А в начале координат, alfa - угол между AD и осью Ох,
(x,y) точка которую проверяем.
Если в этих обозначениях написать математически, то получится что если точка находится внутри прямоугольника должны выполнятся оба условия:
0 <= x*cos(alfa) + y*sin(alfa) <= AD
0 <= -x*sin(alfa) + y*cos(alfa) <= AB
Возможно это можно и упростить...
Да, это первое, что тогда пришло мне вголову, но , всё-таки, с косинусами и синусами не очень-то быстро посчитает.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
000Majestic000 000Majestic000 вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.07.2007
По умолчанию 12.07.2007, 11:02

Я знаю самый реальный ответ)))
Надо просто взять рисунок, где нарисован прямоугольник и точка и банально посмотреть - там она или нет)))
А то вот че то замудрили)))
Ответить с цитированием
  (#14 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 20.07.2007, 12:48

кстати самый действенный способ. Я вот выпуклую поверхность на точках тоже очень быстро ручками делаю, а на компе - не очень.


импортирован с progz.ru
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста помогите пройти тест по одномерным массивам Зарание благодарен igdima Pascal 0 25.05.2011 23:27
Пожалуйста помогите пройти тест по одномерным массивам. igdima Pascal 0 24.05.2011 23:08
Чёрный прямоугольник. Megabuster Любые вопросы от новичков 4 07.05.2011 16:33
Перемещать прямоугольник по вертикали с заданным шагом Катенька Python 3 12.10.2010 03:36
Как пройти активацию Windows? Николаич Любые вопросы от новичков 15 08.06.2010 18:16
Как пройти путь через две указанных ячейки Ol&#39;gA Lisp 0 29.11.2008 23:57
Как нарисовать прямоугольник с помощью Canvas wlad115 C++ Builder 7 27.10.2008 09:42
Прямоугольник под углом Tcanvas Foffka Delphi 5 06.12.2007 23:16
Выделить прямоугольник в фигуре Shturmovik Delphi 11 02.12.2006 22:57
Как сделать прямоугольник в StringGrid Михаил-007 Delphi 12 05.06.2006 12:42
Как с помощью IdSMTP или другой компоненты пройти авторизацию Morgoth Delphi 2 28.03.2005 00:55
Как сделать форму не как прямоугольник или эллипс, а по форме какого-то контера AnDRoGiN Delphi 1 08.12.2004 12:45



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов