![]() |
|
![]() ![]() ![]() |
|
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. |