|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.04.2017, 00:40 | #1 |
Новичок
Джуниор
Регистрация: 01.04.2017
Сообщений: 4
|
Построить по 3 точкам правильный шестиугольник минимального размера - C++
Доброго времени суток. Большая просьба помочь с кодом.
Задача: Даны координаты 3 точек в двумерной плоскости. Необходимо найти координаты точек выпуклого шестиугольника (в идеале многоугольника с любым количеством вершин) таким образом, чтобы эти 3 точки принадлежали сторонам шестиугольника или были его вершинами. Главное условие, чтобы шестиугольник в итоге был минимального размера (с минимальной площадью или описанной окружностью ...) Такой шестиугольник возможно существует не на всех комбинациях 3 точек и это нормально, один из ответов функции в программе должен об этом сообщить. Меня интересуют те случаи, когда его построить возможно. Над алгоритмом я сейчас размышляю. Однозначной идеи пока нет. Рассматриваю вариант, когда 2 точки лежат на одной стороне шестиугольника. Можно построить отрезок по третьей точке, параллельный первому и такой же длины. Эти 2 отрезка будут находиться на максимальном расстоянии друг от друга. Исходя из полученных данных нужно достроить правильный шестиугольник. Вопрос, как это кодом записать? |
02.04.2017, 04:57 | #2 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Я не смогу тебе помощь с программированием, но я могу поделиться своими соображениями.
Тебе надо стремиться получить координаты центра шестигранника. Для этого проведи маленькие кружочки вокруг точек, которые будут одновременно расти: 0.jpg когда же произойдёт соприкосновения этих кругов (может быть надо решить систему из 3-х уравнений, изображающих круги; или по чуть-чуть прибавлять в цикле и проверять условие сошлись ли круги в одной точке. Конечно, при последнем подходе решение будет приближенное), тогда и решение получится: 1.jpg ну а зная центр, можно будет найти координаты остальных узлов. ___________________________________ ___________________________________ _______________________ Кстате, а что ты знаешь по С++? Как ввести данные знаешь? Или циклы тебе известны? (for...while....) |
02.04.2017, 09:24 | #3 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
02.04.2017, 11:51 | #4 |
Новичок
Джуниор
Регистрация: 01.04.2017
Сообщений: 4
|
Спасибо за подсказку с окружностями. Интересная идея.
Но это только частный случай, когда точки совпадают с вершинами. Надо бы ещё рассмотреть ситуации, когда точки попадают на стороны правильного шестиугольника. Да, все циклы и ввод знаю на C++. |
02.04.2017, 12:20 | #5 |
Новичок
Джуниор
Регистрация: 01.04.2017
Сообщений: 4
|
Аватар, спасибо. В целом рассуждение верное.
Только не знаю как именно может помочь радиус Можно поподробнее шаги расписать? |
02.04.2017, 12:59 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А чего радиус не понятен? Правильный шестиугольник вписан в окружность, радиус и характеризует его размеры и площадь в общем-то. Т.е. именно радиус и минимизировать. Насчет существует ли для любых комбинаций - скорее существует, чем нет. Лень дальше разбираться ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 02.04.2017 в 13:01. |
02.04.2017, 14:07 | #7 |
Новичок
Джуниор
Регистрация: 01.04.2017
Сообщений: 4
|
В плане условия минимализации радиус понятен.
Я просто подумал конкретно о нахождении вершин многоугольника с его помощью |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нарисовать правильный шестиугольник, если известна координата одной из его вершин. Шестиугольник поворачива | yuliya.al18 | Помощь студентам | 0 | 19.02.2017 14:56 |
как для построения отрезка по двум точкам на плоскости ХОУ и далее, из одного из концов построенного отрезка построить второй отре | IZOPGRAM | Общие вопросы Delphi | 2 | 27.12.2012 09:28 |
построить изображение http://upwap.ru/912478 чёрные квадраты соответствуют высвечиваемым точкам | mt92 | Помощь студентам | 0 | 15.06.2010 11:04 |
Построить графики по точкам из одного массива. | Лурье | Общие вопросы Delphi | 2 | 15.05.2009 12:28 |