![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.09.2007
Сообщений: 9
|
![]()
Всем доброго времени суток.
У меня такой вопрос. (Программа на Delphi, но язык не принципиален) На канве (TCanvas) разбросана куча объектов (круги и прямоугольники). Есть их координаты (Для кругов - коорд. центра и радиус; для прямоугольников - коорд. левого верхнего угла, длина, ширина). Круги двух видов, прямоугольники одного. Т.е. размеры всех фигур статичные. Есть координаты точки. Подскажите, пожалуйста, какой-нибудь шустренький (ну или, на худой конец, любой) алгоритм, как можно определить, какому из обьектов эта точка принадлежит. (Пользователь кликает мышкой, а мне нужно знать, на каком объекте он кликнул). Ну и еще один вопросик, менее важный. Как сделать, чтобы, когда, пользователь таскает эти обьекты, они не пересекались? Всем заранее спасибо.
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
|
![]() |
![]() |
![]() |
#2 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
![]()
* проверка попадания точки в круг
* проверка попадания точки в прямоугольник * в цикле проверяем все объекты это относится к машинной графике. ищи на ресурсах типа alglib ..
Берегите друг друга!
|
![]() |
![]() |
![]() |
#3 |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#4 |
Регистрация: 11.09.2007
Сообщений: 9
|
![]()
2Virtson: Спасибо за ссылку и за лаконичную формулировку моего вопроса
![]() 2mutabor: когда ты приходишь в ресторан и заказываешь себе еду, тебе говорят: "Вот, что нужно знать, чтобы приготовить ваш заказ:..."? Второй вопрос по-прежнему открыт. Как недопустить пересекания объектов, при их перемещении?
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
|
![]() |
![]() |
![]() |
#5 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
![]()
что имеется в виду ;
объекты закрашенные и один перекрывает другой ? но куда ему деваться, если так пролегает его путь .. выводить перетаскиваемый объект последним, тогда он будет виден весь.
Берегите друг друга!
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 11.09.2007
Сообщений: 9
|
![]()
Ну вот, опять не точно выразился
![]() Таскать - пусть таскает. Останавливаться нельзя. Т.е. Недопустимо, чтобы после перетаскивания один объект закрывал другой. Как его автоматически отодвинуть?
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
|
![]() |
![]() |
![]() |
#7 |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#8 |
Регистрация: 11.09.2007
Сообщений: 9
|
![]()
Это все понятно. Но как определить столкновение? Не проверять же каждый пиксель фигуры, не наплыл ли он на что-то?
И с геометрией у меня проблемы. Я не помню формулу принедлежности точки кругу. Да и что-то нагуглить не получилось...
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
|
![]() |
![]() |
![]() |
#9 | |||
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
![]() Цитата:
Столкновение круга и прямоугольника - расстояние от центра до ближайшей точки. Столкновение прямоугольников - см. по координатам. Цитата:
Цитата:
![]() |
|||
![]() |
![]() |
![]() |
#10 |
Регистрация: 11.09.2007
Сообщений: 9
|
![]()
Всем спасибо, по этой теме вопросов больше нет.
![]()
Неадекватный бред зачастую бывает адекватным ответом на неадекватный вопрос.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Принадлежность точки | 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 |