Russian Qt Forum
Май 15, 2024, 16:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Относительное расстояние до центра 8-угольника  (Прочитано 15269 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Январь 12, 2012, 19:32 »

Добрый день

На плоскости есть выпуклый 8-угольник с центром в точке (0, 0). Гарантируется что этот центр лежит внутри, но не более того. Найти относительное расстояние relD от центра до произвольно заданной точки p, напр

p совпадает с центром, relD = 0
p снаружи, relD > 1
p на ребре, relD = 1
p внутри, relD = Непонимающий

Спасибо
Записан
Fat-Zer
Гость
« Ответ #1 : Январь 12, 2012, 21:43 »

ничего не понял... что за "относительное расстояние"? да и вообще условие как-то бредово звучит...
дано: выпуклый 8-угольник, включающий (0,0); точка p;
найти: расстояние от p до (0,0) [глупость какая-то(Непонимающий)]

[оффтоп]
с пирамидой и конусом чего-нить вышло?
Записан
andrew.k
Гость
« Ответ #2 : Январь 12, 2012, 21:53 »

Я не силен в математике, но попробую Улыбающийся

1. Провести прямую из центра до точки которую рассчитываем.
2. Определить какую из граней пересекает прямая. Найти точку пересечения с ней.
3. Получаем два расстояния от центра до точки и от цетра до точки пересечения. Их отношение и будет относительное расстояния.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Январь 13, 2012, 00:33 »

..условие как-то бредово звучит...
[глупость какая-то(Непонимающий)]...
Пример:радиальный градиент (цвет) для круга. В центре максимальная яркость которая плавно падает к краю, ну или наоборот. Так что, нельзя иметь градиент для чуть более сложной фигуры? Ну а если "нежелание понимать" - так я ж Вас обсуждать не заставляю  Улыбающийся

с пирамидой и конусом чего-нить вышло?
Да, хотя в отдельных случаях погрешность значительна

2. Определить какую из граней пересекает прямая. Найти точку пересечения с ней.
Прошу исполнить

Пантер, перенесли тему так перенесли, не вопрос. Но мне кажется нужно ширше понимать "2D графика", а не сводить дело только к хоровому чтению Ассистента (опиума для народа).
Записан
andrew.k
Гость
« Ответ #4 : Январь 13, 2012, 01:18 »

2. Определить какую из граней пересекает прямая. Найти точку пересечения с ней.
Прошу исполнить
Нужен код на с++ что ли?
Вычислять по очереди каждую сторону.
Будет два пересечения. На сколько я понимаю ровно два. Т.к. многоугольник выпуклый.
Определить какой из двух отрезков искомый тоже не сложно.

Вы такие сложные темы поднимаете, Игорс. Не пойму какие проблемы с нахождением точки пересечения прямых?
Или это стеб надо мной?)
« Последнее редактирование: Январь 13, 2012, 01:20 от andrew.k » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #5 : Январь 13, 2012, 04:32 »

вот это относительное расстояние - это число будет использоваться в какой-то формуле или это просто индикатор? если второе, то просто использовать перечисление: 0 - точка в центре, 1 - внутри, 2 - на ребре, 3 - за пределами.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Январь 13, 2012, 09:26 »

Igors, разве вопрос имеет какое-то отношение к Qt?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Январь 13, 2012, 14:41 »

вот это относительное расстояние - это число будет использоваться в какой-то формуле.. ?
Будет, причем весьма интенсивно, но об этом расскажу позже и в др. теме. Требуется float число.

Igors, разве вопрос имеет какое-то отношение к Qt?
Qt имеет классы для поддержки 2D графики (QPointF. QPolygon, QVector2D и др), так почему бы их не задействовать? Не спрашивать же каждый раз "как сделать это средствами Qt?" - это само собой подразумевается. 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Январь 13, 2012, 14:52 »

Qt имеет классы для поддержки 2D графики (QPointF. QPolygon, QVector2D и др), так почему бы их не задействовать? Не спрашивать же каждый раз "как сделать это средствами Qt?" - это само собой подразумевается. 
Все равно, к данному разделу эта тема имеет большее отношение.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #9 : Январь 13, 2012, 14:57 »

вот это относительное расстояние - это число будет использоваться в какой-то формуле.. ?
Будет, причем весьма интенсивно, но об этом расскажу позже и в др. теме. Требуется float число.
если формула не взята с потолка, то должно быть объяснение того, что понимается под "относительным расстоянием". вариант "отношение расстояния от центра до точки к расстоянию от центра до ребра, которое пересекает луч центр-точка" кажется очень даже подходящим и вычислительных сложностей собой не представляет.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Январь 13, 2012, 15:06 »

Все равно, к данному разделу эта тема имеет большее отношение.
Ну на "алгоритм" это не тянет - очевидно что дело сводится к нахождению пересечений. А вот как это сделать покрасивше и чтобы скорость была приличной (кратность вызовов большая) - имеет смысл обсудить.

вариант "отношение расстояния от центра до точки к расстоянию от центра до ребра, которое пересекает луч центр-точка" кажется очень даже подходящим и вычислительных сложностей собой не представляет.
Это напоминает предыдущего докладчика у которого так же "все просто" - и так же отсутствуют хоть какие-то намеки на код (пусть даже "псевдо")  Улыбающийся
Записан
andrew.k
Гость
« Ответ #11 : Январь 13, 2012, 15:17 »

намек на код
Записан
Tonal
Гость
« Ответ #12 : Январь 17, 2012, 08:53 »

2 маленбких дополнения к вашей многомудрой дискуссии:
 1. Точка, относительно выпуклого многоугольника может:
   а. Лежать внутри.
   б. Совпадать с одной из вершин.
   в. Лежать на одной из граней.
   г. Лежать вне.
  Соответственно все эти случаи нужно рассматривать проводя отрезок соединяющий «центр» и точку.
 2. Если
p совпадает с центром, relD = 0
p снаружи, relD > 1
p на ребре, relD = 1
p внутри, relD = Непонимающий
то очевидно, что при p внутри, 0 < relD < 1. Улыбающийся

Ежели вспомнить Qt, то в классе QRegion есть метод contains который отвечает на вопрос внутри точка или снаруже.
Но он не очень подходит для данного случая т. к. во первых неясно как трактует попадение на границу, а во вторых разработан для очень общих случаев и будет изрядно тормознее нормальных ручных вычислений. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Январь 17, 2012, 13:28 »

..и будет изрядно тормознее нормальных ручных вычислений. Улыбающийся
Так что у нас с нормальными ручными вычислениями?  Улыбающийся
Записан
andrew.k
Гость
« Ответ #14 : Январь 17, 2012, 18:45 »

..и будет изрядно тормознее нормальных ручных вычислений. Улыбающийся
Так что у нас с нормальными ручными вычислениями?  Улыбающийся
Задача еще не решена что ли?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 22.