Заполнить объем окружностями |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
Заполнить объем окружностями |
29/03/2017, 22:58
Сообщение
#1
|
|
Наш человек Группа: Пользователи Сообщений: 490 Регистрация: 02/10/2006 Из: Харьков Пользователь №: 37 887 |
Всем привет, мозгую над следующей задачей: нужно заполнить объем, ограниченный контуром, окружностями разного диаметра, так, чтоб они не пересекались, то есть как бы засыпать этот объем, чтоб окружности были касательными рядом лежащим. Примерно изобразил на картинке:
|
|
|
30/03/2017, 02:04
Сообщение
#2
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
|
|
|
30/03/2017, 12:43
Сообщение
#3
|
|
Наш человек Группа: Пользователи Сообщений: 490 Регистрация: 02/10/2006 Из: Харьков Пользователь №: 37 887 |
да, нужно 2D, ну или получить 3D из цилиндров, чтоб сделать потом шейп
|
|
|
30/03/2017, 14:47
Сообщение
#4
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
типа такого что-ли?
multi-scatter и тп тулзы за долю секунды такое сделают, с куда лучшей упаковкой
Прикрепленные изображения
|
|
|
30/03/2017, 14:51
Сообщение
#5
|
|
Наш человек Группа: Пользователи Сообщений: 490 Регистрация: 02/10/2006 Из: Харьков Пользователь №: 37 887 |
|
|
|
30/03/2017, 14:54
Сообщение
#6
|
|
Наш человек Группа: Пользователи Сообщений: 490 Регистрация: 02/10/2006 Из: Харьков Пользователь №: 37 887 |
|
|
|
30/03/2017, 15:07
Сообщение
#7
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
да всё можно сделать. лишнее всегда можно потом через волюм селект выбрать и удалить на крайняк
как вариант можно еще на шейп накинуть гармент, сделать чамфер всем вершинам, затем релакс и вобщем-то довольно близко будет к тому что надо. upd. тока что проверил на просроченной демке короны. скаттер работает, так-что можно им такое сделать, правда придется таки немного вручную почистить края. Сообщение отредактировал Jahman - 30/03/2017, 15:23 |
|
|
01/04/2017, 10:11
Сообщение
#8
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
|
|
|
04/04/2017, 12:11
Сообщение
#9
|
|
Наш человек Группа: Пользователи Сообщений: 490 Регистрация: 02/10/2006 Из: Харьков Пользователь №: 37 887 |
Спасибо! Попробую. По наводке нашел |
|
|
04/04/2017, 13:39
Сообщение
#10
|
|
▄▀▄▀▄▀▄▀▄ Группа: Пользователи Сообщений: 1 551 Регистрация: 31/10/2009 Пользователь №: 73 967 |
С третей минуты.
|
|
|
04/04/2017, 14:03
Сообщение
#11
|
|
Наш человек Группа: Пользователи Сообщений: 490 Регистрация: 02/10/2006 Из: Харьков Пользователь №: 37 887 |
|
|
|
04/04/2017, 14:53
Сообщение
#12
|
|
Давно уже Группа: Координатор Сообщений: 9 675 Регистрация: 24/06/2002 Из: Зеленоград Пользователь №: 158 |
Ну, можно изучать и MGC |
|
|
04/04/2017, 16:16
Сообщение
#13
|
|
▄▀▄▀▄▀▄▀▄ Группа: Пользователи Сообщений: 1 551 Регистрация: 31/10/2009 Пользователь №: 73 967 |
Цитата Ну, можно изучать и MGC Думаю, Борис, там, в скрипте, нету Пи, что бы масса окружностей "притёрались" друг к другу в замкнутом пространстве. |
|
|
06/04/2017, 13:23
Сообщение
#14
|
|
Давно уже Группа: Координатор Сообщений: 9 675 Регистрация: 24/06/2002 Из: Зеленоград Пользователь №: 158 |
Если там покопаться то и Пи туда ввести можно.
|
|
|
06/04/2017, 16:57
Сообщение
#15
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
у меня почти получилось через pflow data operator сделать
ниже вариант без учета границ. вариант с учетом коллизий границ куда нетривиальнее, даже не знаю как подступиться CODE gc()
try ( delete circles ) catch() obj = if $text001 == undefined then (convertToMesh (text text:"Q" italic:true)) else $text001 circles = #() r = ray [0,0,0] [0,0,-1] circlesCount = 500 minR = 1.0 maxR = 2.0 fn handleCircleCollisions obj nodes gap:0.03 = ( collisions = [0,0] collides = false for n in nodes while not collides where n != obj and (d = distance obj.pos n.pos) < (obj.radius + n.radius) do ( collides = true n.pos += (normalize((n.pos - obj.pos) * [1,1,0])) * ( obj.radius + n.radius - d + gap) collisions.x += 1 handleCircleCollisions n nodes ) collisions.x ) do ( r.pos = (random obj.min obj.max) + [0,0,999] pt = intersectRay obj r if pt != undefined do ( append circles (circle pos:pt.pos radius:(random minR maxR) wirecolor:yellow) ) ) while circles.count < circlesCount with undo off ( do ( redrawViews() windows.processPostedMessages() collisionsCount = 0 for c in circles do collisionsCount += handleCircleCollisions c circles ) while not keyboard.controlPressed and collisionsCount > 0 ) messageBox "ready" Сообщение отредактировал Jahman - 06/04/2017, 16:58 |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 19/03/2024 - 04:32 |