|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
|
Найти выпуклую оболочку заданного множества точек на плоскости08.04.2020, 19:56. Показов 10905. Ответов 41
Здравствуйте!
Помогите решить задачу: Задано множество точек на плоскости. Найти выпуклую оболочку этого множества, то есть выпуклый многоугольник с вершинами в некоторых точках этого множества, который охватывает все его точки. С множеством столкнулся впервые,пытался понять что-то из интернета-пока что не очень понятно
0
|
|
| 08.04.2020, 19:56 | |
|
Ответы с готовыми решениями:
41
Найти выпуклую оболочку множества Перечислить точки заданного множества точек на плоскости в соответствии с данным порядком Перечислить точки заданного множества точек на плоскости в соответствии с порядком |
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
|
| 10.04.2020, 19:07 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
|
| 10.04.2020, 21:12 [ТС] | |
|
Вот
0
|
|
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
||
| 10.04.2020, 21:28 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
|
| 10.04.2020, 21:49 [ТС] | |
|
Да,в портабельной версии заработало. А что именно делает второй код? Просто я вижу в коде заданные точки вами,и они в другой последовательности выводятся. Я думал,что задача состоит в том,что задано много точек на площади и нужно обвести их по крайним точкам и таким образом образуется многоугольник.
0
|
|
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
||
| 11.04.2020, 02:16 | ||
|
Именно это вы и видите на моем скриншоте. Как я уже сказал выше, в задаче по ссылке уже известно заранее, что все исходные точки окажутся вершинами нового многоугольника. Поэтому в той задаче всегда будет получаться просто "вывод исходных точек в другой последовательности". В вашей же задаче в общем случае так не будет: скорее всего не все исходные точки войдут в выпуклую оболочку. Это другая задача. Потому я и сказал выше: надо проверить, готов ли второй алгоритм по ссылке к решению вашей задачи сразу, или что-то еще нужно подправить. Добавлено через 3 часа 59 минут ... И проверка показывает, что нет, алгоритм по ссылке приспособлен (оптимизирован) именно для решения задачи по ссылке. Строить выпуклую оболочку произвольного набора точек он не умеет.
1
|
||
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
||||||
| 11.04.2020, 03:25 | ||||||
Сообщение было отмечено TheCalligrapher как решение
Решение
Вот как, например, может выглядеть программа, которая строит выпуклую оболочку для произвольного (случайного) набора точек, именно по тому алгоритму, что описан в моем сообщении #3
1
|
||||||
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
|
| 11.04.2020, 11:21 | |
|
... Для ее корректной работы требуется, чтобы во входном массиве не было одинаковых точек. В коде выше это не проверяется, т.е. предполагается что и так "повезет".
0
|
|
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
|
| 11.04.2020, 13:00 [ТС] | |
|
Понял,спасибо за помощь!
0
|
|
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
|
| 15.04.2020, 11:00 [ТС] | |
|
TheCalligrapher, вопрос,а возможно ли написать этот код без структур? Оказывается нам еще структуры в коде использовать нельзя.
0
|
|
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
|||||||||||||||||
| 15.04.2020, 11:09 | |||||||||||||||||
xy->x и xy->y теперь будет (*xy)[0] и (*xy)[1].xy.x и xy.y теперь превратятся в xy[0] и xy[1].poly[i].x и poly[i].y теперь превратятся в poly[i][0] и poly[i][1].И т.д. и т.п. Также: массивы в С нельзя копировать присваиванием, то есть везде, где в коде нужно такое копирование придется просто поэлементно скопировать два элемента или сделать memcpy.Например:
1
|
|||||||||||||||||
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
||||||
| 15.04.2020, 11:47 [ТС] | ||||||
|
TheCalligrapher, поменял почти всё правильно вроде как,вот только в некоторых местах ошибки. Одна общая ошибка с определением типа в строке 9 опять же таки,и в строке 28 в функции add_vertex 1 аргумент имеет не верный тип на сколько я понял.
0
|
||||||
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
|
| 15.04.2020, 12:04 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
||||||
| 15.04.2020, 12:11 [ТС] | ||||||
|
Да,ошибку понял.Я думал оно всё связано с структурой.Забыл что в коде был добавлен массив с названием Ху.
Вот,переделал:
И в 30 тоже такая же ошибка.
0
|
||||||
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
|
| 15.04.2020, 12:21 | |
|
Я же вам уже сказал, что присваивание массивов не будет компилироваться и его нужно везде заменить на
memcpy.
1
|
|
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
||||||
| 15.04.2020, 12:30 [ТС] | ||||||
|
Переделал,работает,но точек стало в разы больше. Где то ошибка?
0
|
||||||
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
||||||||||||
| 15.04.2020, 12:58 | ||||||||||||
qsort непраивльно сортирует из-за того, что вы сломали cmp_yx. У вас теперь неправильно расставлены скобки в
1
|
||||||||||||
|
0 / 0 / 0
Регистрация: 16.02.2020
Сообщений: 93
|
|
| 15.04.2020, 13:08 [ТС] | |
|
Спасибо вам ещё раз,всё работает.
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,331
|
|
| 21.06.2020, 17:32 | |
|
В функции int cmp_yx(const void *p1, const void *p2)
D:\prog_Qt_4.7\_uchebnye\Geometry\Triang le_in_kvadr\triangle_in_kvad\widget.cpp: 47: ошибка: invalid conversion from 'const void*' to 'const Xy*' Пошарил в сети, там функция qsort так же вызывается без аргументов, а в реализации функции стоят void. Но у меня ругается. Что ей не так?
0
|
|
|
Вездепух
13211 / 6844 / 1824
Регистрация: 18.10.2014
Сообщений: 17,316
|
||
| 21.06.2020, 21:15 | ||
|
D:\prog_Qt_4.7\_uchebnye\Geometry\Triang le_in_kvadr\triangle _in_kvad\widget.cpp???
0
|
||
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,331
|
|
| 21.06.2020, 23:11 | |
|
То есть в Qt qsort работать не будет?
0
|
|
| 21.06.2020, 23:11 | |
|
Среди заданного множества точек на плоскости выбрать 3 по условию
Даны два множества точек на плоскости. Найти центр и радиус окружности
Выпуклая оболочка множества Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|