Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2007, 16:41   #1
Angel_CJ
 
Аватар для Angel_CJ
 
Регистрация: 11.09.2007
Сообщений: 9
Вопрос Принадлежность объекта по координатам

Всем доброго времени суток.
У меня такой вопрос. (Программа на Delphi, но язык не принципиален)
На канве (TCanvas) разбросана куча объектов (круги и прямоугольники). Есть их координаты (Для кругов - коорд. центра и радиус; для прямоугольников - коорд. левого верхнего угла, длина, ширина). Круги двух видов, прямоугольники одного. Т.е. размеры всех фигур статичные.
Есть координаты точки. Подскажите, пожалуйста, какой-нибудь шустренький (ну или, на худой конец, любой) алгоритм, как можно определить, какому из обьектов эта точка принадлежит.
(Пользователь кликает мышкой, а мне нужно знать, на каком объекте он кликнул). Ну и еще один вопросик, менее важный. Как сделать, чтобы, когда, пользователь таскает эти обьекты, они не пересекались?
Всем заранее спасибо.
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
Angel_CJ вне форума Ответить с цитированием
Старый 11.09.2007, 17:09   #2
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

* проверка попадания точки в круг
* проверка попадания точки в прямоугольник
* в цикле проверяем все объекты

это относится к машинной графике. ищи на ресурсах типа alglib ..
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 11.09.2007, 17:21   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Ну это просто, если бы всякой разной формы объекты тогда сложнее было бы
Что надо уметь чтобы самому написать такой алгоритм:
определять координаты клика
написать простой цикл for
создать простой одномерный массив
знать геометрию за третий класс (чтобы определить принадлежность)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.09.2007, 17:39   #4
Angel_CJ
 
Аватар для Angel_CJ
 
Регистрация: 11.09.2007
Сообщений: 9
По умолчанию

2Virtson: Спасибо за ссылку и за лаконичную формулировку моего вопроса
2mutabor: когда ты приходишь в ресторан и заказываешь себе еду, тебе говорят: "Вот, что нужно знать, чтобы приготовить ваш заказ:..."?

Второй вопрос по-прежнему открыт. Как недопустить пересекания объектов, при их перемещении?
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
Angel_CJ вне форума Ответить с цитированием
Старый 11.09.2007, 17:42   #5
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

что имеется в виду ;
объекты закрашенные и один перекрывает другой ?

но куда ему деваться, если так пролегает его путь ..

выводить перетаскиваемый объект последним, тогда он будет виден весь.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 11.09.2007, 17:51   #6
Angel_CJ
 
Аватар для Angel_CJ
 
Регистрация: 11.09.2007
Сообщений: 9
По умолчанию

Ну вот, опять не точно выразился
Таскать - пусть таскает. Останавливаться нельзя. Т.е. Недопустимо, чтобы после перетаскивания один объект закрывал другой. Как его автоматически отодвинуть?
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
Angel_CJ вне форума Ответить с цитированием
Старый 11.09.2007, 21:52   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

во первых тут не ресторан, а во вторых если ты по отдельности знаешь все что я перечислил, ты прекрасно можешь сам написать, если чего-то не знаешь спрашивай именно это
в OnMouseDown цепляй объект к мыши
в OnMouseUp бросай
в OnMouseMove проверяй координаты, если происходит столкновение прекращаешь передвижение объекта или же толкаешь соседний
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.09.2007, 22:19   #8
Angel_CJ
 
Аватар для Angel_CJ
 
Регистрация: 11.09.2007
Сообщений: 9
По умолчанию

Это все понятно. Но как определить столкновение? Не проверять же каждый пиксель фигуры, не наплыл ли он на что-то?
И с геометрией у меня проблемы. Я не помню формулу принедлежности точки кругу. Да и что-то нагуглить не получилось...
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
Angel_CJ вне форума Ответить с цитированием
Старый 12.09.2007, 13:15   #9
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Но как определить столкновение?
Столкновение кругов - расстояние между центрами.
Столкновение круга и прямоугольника - расстояние от центра до ближайшей точки.
Столкновение прямоугольников - см. по координатам.

Цитата:
Я не помню формулу принедлежности точки кругу
(x-x0)^2+(y-y0)^2<=R^2

Цитата:
когда ты приходишь в ресторан и заказываешь себе еду, тебе говорят: "Вот, что нужно знать, чтобы приготовить ваш заказ:..."?
В ресторане за заказ платят...
Carbon вне форума Ответить с цитированием
Старый 12.09.2007, 18:43   #10
Angel_CJ
 
Аватар для Angel_CJ
 
Регистрация: 11.09.2007
Сообщений: 9
По умолчанию

Всем спасибо, по этой теме вопросов больше нет.
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
Angel_CJ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Принадлежность точки Forro Помощь студентам 4 26.05.2008 14:33
Вычислить обьем пирамиды по ее координатам в пространстве Dog Помощь студентам 2 19.05.2008 17:05
Рассчет времени по координатам Квэнди Свободное общение 5 28.12.2006 12:59
Вставка текста по координатам в Word Nowichok Компоненты Delphi 0 16.12.2006 20:01