![]() |
|
![]() ![]() ![]() |
|
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
Привет, All!
требуется определить входит ли точка в фигуру фигура наиболее похожа на вертикально стоящее куринное яйцо (эллипс со смещенным к низу центром) подскажите как это можно решить? спасибо |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Ravend, уравнение поверхности есть? Тогда сделать так, чтоб уравнение описывало поверхность с осью эквивалетной оси Z. Берем z-координату точки, которую проверяем. От поверхности отсекаем эллипс на этом уровне и опеределяем, принадлежит ли точка эллипсу.
|
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
фигура 2х мерная
вот собственно это и хотелось узнать, в виде формул |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
как задана граница?
(формула, просто на рисунке точками или ещё как-то) -------------------- qqq |
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
собственно первоначальная задача такова, нужно найти точки входящие в окружность с R радиусом (см. рисунок), но при переводе данной окружности к декартовой системе координат, окружность приобретает сходство с 2d-проекцией яйца, возможно я пошел и не тем путем, но мне кажется что нужно искать именно вхождение точек в описанной мной эллипс
P.S. очень важно найти входящие точки одной итерацией (вывести формулу) т.к. в дальнейшем эта формула должна подставляться в sql-запрос Присоединённый файл ( Кол-во скачиваний: 46 ) ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Ravend, не ясно, почему окружность в декартовой системе координат перестаёт быть окружностью...
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
формула внутренности эллипса простая: sqr(x/a)+sqr(x/b)<=1 (для случая, когда оси эллипса параллельны осям координат) a - длина горизонтальной полуоси b - вертикальной вот чего-чего, а эллипса там не увидел... вариант (по рисунку) такой: выводим зависимость координат (x,y) от номера делаем 6 линейных неравенств... -------------------- qqq |
|||
|
||||
chich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2006 Репутация: нет Всего: нет |
по-моему для того чтобы получить ответ на свой вопрос надо его ставить конкретно - что дано, что надо получить.
но если я правильно понял до задана окружность с координатами в точке x y и с радиусом R. так зачем же городить огород надо просто проверять если расстояние до центра меньше радиуса, значит точка принадлежит окружности |
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
Вы уважаемый картинку смотрели? приведите изображенную фигуру к декартовой системе координат и посмотрите какая у Вас окружность получится, если Вы мне напишете формулу буду весьма признателен а флудить просьба в другом месте |
|||
|
||||
chich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2006 Репутация: нет Всего: нет |
есть такие же формулы эллипса (см выше),
хотя она тоже не нужна если принять за единичный отрезок по оси x 1 а по оси y 2. Тогда ваше так сказать "яйцо" превратится в окружность - все дело в единицах измерения. и по-моему есть еще куча решений вашей задачи,но это самое простое (по-моему даже очень). Можно разделить контур окружности на две части верхнюю и нижнюю и смотреть по графикам - если ниже одного и выше другого то попадает в окружность. и еще есть куча вариантов |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
А вы ? ![]() ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
сдается мне, что вы просто не делали преобразования, вот что у меня получается, и убедите меня что это окружность
Присоединённый файл ( Кол-во скачиваний: 32 ) ![]() |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
Из первого рисунка у тебя шестиугольник!
Из второго , при такой дискретности, вообще не понятно что. так что сначало имхо надо немного конкретизировать задачу, а уж потом спрашивать, ![]() ты спросил про окружность тебе про нее и ответили, на картинках совсем другое ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
см. пост №1
упоминание мной окружности относиться к не декартовой системе координат, заметте что там единицей является не квадрат, а гексагон следовательно формула окружности известная нам не подходит поймите, что точка A1(0;1) в этой системе стоит не просто справо от точки A0(0;0), а с право-вверх |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Ravend, у тебя координаты могут принимать только целые значения? если да и будешь работать с базой, то занеси в таблицу все целочисленные координаты относящиеся к фигуре и проверяй на принадлежность просто выборкой-select.
|
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
да целочисленные, но к сожалению Вам способ не подходит, т.к. он предусматривает заранее заданный размер фигуры, и соответственно динамически менять диаметр не получиться
![]() но спасибо за совет ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Ravend, сорри за глупый вопрос, но где на этой фигуре диаметр?
Добавлено @ 15:11 вообще, не могли бы на пальцах пояснить, как эту фигуру "приводить в декартовы координаты"? |
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
ссори если было не понятно, думаю такой рисунок снимет вопрос
P.S. фигура представляет собой окружность (возможно изобразил не совсем достоверно) с радиусом R (в данном случае =5), но данные в БД хранятся в виде X:Y, требуется вывести формулу подставив которую в запрос можно было выбирать точки входящие в данную фигуру Присоединённый файл ( Кол-во скачиваний: 20 ) ![]() |
|||
|
||||
Aloha |
|
|||
. ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 351 Регистрация: 14.5.2006 Репутация: 4 Всего: 165 |
Ravend
Идея такая. Помещаем центр нашего шестиугольного "круга" в начало координат. Перенумеровываем шестиугольники как показано на рис. слева (это можно сделать любым другим способом, главное, чтобы каждый шестиугольник имел уникальный номер). Затем перенумеровываем шестиугольники как показано на рис. справа. Таблицу соответствия храним в БД. Далее, задаемся вопросом, принадлежит ли "кругу", например, шестиугольник №101 и если да, то какой именно "окружности" (слою). По таблице соответствия находим номер нашего шестиугольника на рис. справа – это №75. Далее пользуемся формулой (привожу ее Excel’евский вариант): =ОКРВНИЗ((-1+КОРЕНЬ(1+8*ОКРВНИЗ((A1-1)/6;1)))/2;1)+1 Подставляем в нее 75 (данные для вычисления помещаем в ячейку A1) Получаем в результате число 5 – это искомый номер "окружности" (нумерация начинается с 0). Точно также, например, для шестиугольника №161 получаем по таблице соответствия номер 192, подставляем его в формулу и получаем номер окружности – 8. P.S. Должен отметить, что приведенная формула некорректно обрабатывает №0. Если нужны подробности по формуле – пишите в личку. Это сообщение отредактировал(а) Aloha - 29.6.2006, 18:24 Присоединённый файл ( Кол-во скачиваний: 16 ) ![]() |
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
Aloha, спасибо но тоже то
![]() выше приводилась формула:
только в ней участвуют центр эллипса и его радиусы, а как здесь учесть точки проверяемые на принадлежность фигуре |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
предполагается, что центр в нуле
если нет - поотнимать его координаты от координат проверяемой точки т.е. получается: sqr( (x-xc)/a ) + sqr( (y-yc)/b ) <= 1 -------------------- qqq |
|||
|
||||
Ravend |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 19.7.2005 Репутация: нет Всего: 1 |
всем спасибо, вроде решение найдено
|
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
-------------------- Всем добра ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |