|
0 / 0 / 0
Регистрация: 02.08.2015
Сообщений: 2
|
|
Сортировка по полярному углу относительно точки18.11.2015, 21:17. Показов 9945. Ответов 15
Метки нет (Все метки)
Помогите пожалуйста с проблемой, у меня есть множество точек в декартовой системе координат. Как отсортировать их по полярному углу относительно нижней-левой точки?
0
|
|
| 18.11.2015, 21:17 | |
|
Ответы с готовыми решениями:
15
Сортировка по полярному углу Сместить векторы относительно углу поворота Найти вектор по точке и углу поворота относительно оси Х |
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|
| 19.11.2015, 04:27 | |
|
сортируйте по косинусу угла
0
|
|
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,347
|
|
| 24.11.2015, 02:13 | |
|
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
||
| 24.11.2015, 02:42 | ||
|
во-первых, он не определён для пи/2 во-вторых, он не является монотонной функцией на отрезке [0, пи]
0
|
||
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,347
|
||
| 24.11.2015, 15:10 | ||
|
Угол между точками равен
Во многих языках есть встроенная функция atan2, в лиспе функция tan может принимать 2 аргумента. Диапазон значений [-pi pi] - это уже целая окружность, все что нужно сделать - посчитать разности абсцисс и ординат точек. Чтобы посчитать косинус, нужно сначала посчитать корень, потом посчитать косинус... Чтобы посчитать тангенс, нужно посчитать тангенс Вычисление корня и тригонометрических функций - это по сути вычисление рядов. В случае с косинусом программа на большом количестве точек просядет в скорости
0
|
||
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
||||
| 24.11.2015, 19:34 | ||||
|
(но если Вы принципиально против корней, то от них можно легко избавиться, домножив на abs(cos))
0
|
||||
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,347
|
|
| 24.11.2015, 20:41 | |
|
0
|
|
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|
| 24.11.2015, 21:31 | |
|
0
|
|
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,347
|
||
| 24.11.2015, 23:37 | ||
|
От условия тут не избавиться в любом случае, поэтому лучше делить разность на разность, чем разность на сумму квадратов разностей...
0
|
||
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
||||
| 25.11.2015, 00:26 | ||||
|
только не "левая нижняя", как Вы пишете, а "нижняя-левая", как в условии. точка будет внизу, а синус нас не интересует, так как не используется в алгоритме и на данной области функция cos везде определена и монотонна поэтому не требуется проверки дополнительных условий
0
|
||||
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,347
|
||
| 25.11.2015, 00:51 | ||
|
Если речь идет о прямоугольнике ограничивающем точки, то в нижнем левом углу может не быть ни одной точки, а может и быть и не одна... Например параллелограм или все точки имеющие одинаковые координаты. В таком случае расстояние до точки из угла равно нулю и косинус не посчитать, так что нужно делать проверку...
0
|
||
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
||||
| 25.11.2015, 01:49 | ||||
|
я не знаю, какой угол будет "нижним левым", а "нижнюю-левую" точку назову легко (я и назвал), так что никакой неточности в ней нет например, алгоритм Джарвиса для вычисления выпуклой оболочки: "В качестве начальной берётся самая левая нижняя точка" то есть, это устоявшийся термин левая нижняя точка - это самая левая точка, а если таких несколько, то самая нижняя из них да, на этом этапе без сравнения не обойтись, но этот этап имеет меньшую сложность = O(n) и на этом этапе мы косинусы не вычисляем, так что никаких проблем с вычислением косинуса не будет
0
|
||||
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,347
|
|||
| 25.11.2015, 02:30 | |||
|
0
|
|||
|
Модератор
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
|
|||||
| 25.11.2015, 03:40 | |||||
|
во-вторых, даже если целые, то точно так же не получится. как минимум, понадобится ещё один проход. и потом их придётся вставлять в середину отсортированного массива, что неудобно. в-третьих, даже если мы согласимся на такое бессмысленное усложнение алгоритма, всё-равно придётся высчитывать, в какой квадрат точка попадает, так рост тангенса не гарантирует рост угла а в множество она входит по-определению - мы выбираем среди точек множества если Вас не устраивает общепринятое толкование термина "нижняя левая точка множества", то спросите у ТС, что он имеет ввиду можно получить переполнение, просто деля большое число на маленькое vlisp, Вы уже 3 раза меняли/дополняли свой алгоритм, а он всё не работает. Что Вы хотите доказать? Что, когда Вы, наконец, учтёте все ньюансы и составете работающий алгоритм, то он будет проще моего? на всякий случай, напомню Вам, что является предметом дискуссии:
0
|
|||||
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,347
|
||
| 25.11.2015, 05:09 | ||
|
0
|
||
| 25.11.2015, 05:09 | |
|
Помогаю со студенческими работами здесь
16
Повернуть точки на некоторый градус относительно первой точки Заданы две точки (х1, у1), (х2, у2). Определить, лежат ли обе точки относительно заданной прямой в одной полуплоскости Поворот объекта относительно заданной точки на заданный угол, а затем - отражение относительно заданной прямой
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|