|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
03.01.2011, 11:59 | #1 | |
Как вычислить диаметр кгруга описанный вокруг нескольких окружностей
Минск
Регистрация: 16.09.2006
Сообщений: 1,587
|
||
Просмотров: 30914
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
И где здесь программирование?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Тут надо алгоритм найти. А программировать я смогу
Круг в круг помещать нельзя. Груги могут только соприкасаться. Окружностей может быть сколько угодно и разных диаметров.
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
|
|||
|
||||
zamtmn, спасибо за наводку. Но всеравно не то. У меня окружности имеют разные диаметры, а на приведенной ссылке одинаковые.
Честно говоря думал задачка простая и я просто в школе плохо учился ... но тут походу простого решения не получится. Для чего все эти расчеты: делаю трассу кабеля. Есть полиэтиленовые трубы с внутренним диаметром 97.4мм Есть кабели с наружным диаметром (разные). Ну и идет проверка на заполнение трубы. Если кабели не входят, беру запас. Думал автоматизировать каким лиспом. Например вводить только диаметры кабелей а в результате получать диаметр заполнения трубы и необходимость запаса... В общем придется "на глазок" по старинке...
__________________
Поезд который устал от ржавого здравомыслия рельсов... Последний раз редактировалось Shoorup, 03.01.2011 в 16:26. |
||||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
Цитата:
|
|||
|
||||
Draw a minimum circle that contain select points
The minimum circle contain set of points, Thanks for Menzi's function
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Цитата:
по-простому он называется "алгоритм заполнения рюкзака" http://en.wikipedia.org/wiki/Knapsack_problem |
|||
|
||||
Цитата:
Если нужно действительно хорошее заполнение, можно пойти по пути генетических алгоритмов. Суть генетического алгоритма - постепенное улучшение имеющегося заполнения. Т.е. применительно к твоей задаче, берем все диаметры и заполняем самым простым способом - как пример в строчку выставляем самые большие диаметры, над ними следующей строкой меньшие, дальше еще меньшие итд, получая таким образом некую пирамиду. Полученное заполнение имеет место быть, но качество изначально неудовлетворительное. Потом пишем несколько простых программ, которые перестановками кругов, могут уплотнить общее заполнение, например, если одна строка слишком длинна, то можно убрать одну окружность и переместить на другую строку или если круги стоят квадратом, то сместить их в треугольник. Уверен, недолго поразмышляв о задаче с перестановками, можно придумать целую кучу различных простых алгоритмов, которые могут немного улучшить размещение кругов. Далее, имея несколько программ по улучшению общего замощения, можно их последовательно выполнять, каждый раз проверяя, есть ли изменения в диаметре описанной окружности и какова величина изменения от перестановок. Если программа улучшает картину, мы оставляем изменения, если не улучшает или ухудшает - то отменяем. Таким образом, мы последовательно применяем все программы, постоянно проверяя результат и когда после цикла применения всех программ, результат перестанет улучшаться или шаг улучшения будет меньше выбранной нами величины, можно заканчивать вычисления. Мне нравится такой подход тем, что действительно получается отличный результат и легкое улучшение программы (все алгоритмы довольно просты и по отдельности не занимают много места)...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
|
||||
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Мы считаем, ...таем, ...таем! Регистрация: 12.08.2008
Europe
Сообщений: 763
|
Давай на бумаге:
1. Проводим три касательные до взаимного пересечения. 2. Вершины образовавшегося треугольника соединяем с центрами окружностей. Получим точки касания внутренних окружностей с внешней. 3. Определяем равноудаленную точку от точек касания окружностей. Это и будет центр внешней окружности.
__________________
The cat that walks by itself. |
|||
|
||||
Цитата:
VVA, не знаю как применить к данной задаче этот lisp...
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
|
||||
Shoorup, Я п посте #8 давал ссылки на лисп. Ты его смотрел?
На твоем примере поделил с помощью _divide круги точками и применил лисп из #8. Красный круг то, что он выдал
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Дал с дуру 360 точек на каждый круг)) Программа начала с ума сходить
Это все конечно хорошо хоть и не удобно но пользоваться можно. И все равно меня интересует геометрическое решение для данной задачки, ну или если хотите то просто формула. Цитата:
__________________
Поезд который устал от ржавого здравомыслия рельсов... Последний раз редактировалось Shoorup, 04.01.2011 в 19:17. |
||||
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
склеить из кусков:
http://forum.dwg.ru/showpost.php?p=488808&postcount=135 а в следующем посте (136) описание |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Rotate нескольких объектов вокруг своей оси | Silavsale | AutoCAD | 21 | 11.06.2013 11:59 |