Кажется понял, попытался представить как это выглядит — не получилось. Можно использовать целевую функцию с несколькими атомами вроде (13-23) + (12-24), опять же как бы я решал задачу с рукой робота, будь там множество степеней свободы.
В описанном случае действительно если закрепленная петля не позволяет дотянуться до атома, скорее всего означает то что ее нельзя закреплять. Возможно «мягко» закрепить, то есть она будет двигаться но не так активно как незакрепленная часть.
Хотя опять же допускаю возможность такой комбинации поворотов, что без полного переворота всей петли будет невозможно дотянуться до некоторого атома. При переборе углов очевидно оптимальное расположение будет найдено, итеративно скорее всего — нет. Можно придумывать различные точки отката, скорее всего это не то что нужно. Выстроить сразу правильную петлю не думаю что получится, разве что методом Монте-Карло из различных начальных положений сворачивать (опять же нет гарантии правильности решения).
Лирическое отступление: мне кажется в природе в любом случае они сворачиваются из изначальной структуры под действием некоторых сил, стремясь образовать водородные связи и каким-то образом расположиться в пространстве. Мне все же кажется — это больше итеративный подход, нежели перебор всех углов с отсечением.
Даже при закрепленных узлах 13-23, у нас остаются как минимум 2 (на двумерной картинке) степени свободы в узлах 13 и 23, за счет которых мы можем подобрать необходимое расстояние для связи 12-24.
Скорее всего я что-то не понимаю, можете объяснить по этой картинке как петля может быть не такой?
Проще, для дуги можно угол распределить по всем звеньям, получим загогулину в нужную точку :).
Вообще если за ранее известны узлы между которыми могут образоваться водородные связи, например 14-22 на вашем изображении. Очевидно, что они соединяются цепочкой 15-16-...-20-21, свернув ее можно их соединить. При этом остальную часть в принципе можно не считать пусть висит как есть.
После того как первые два узла соединены весь сегменты 14-15-...-21-22 фиксируем и пробуем соединить узлы 13-23, так как сегмент уже фиксирован, будет гораздо проще это сделать.
Дальше можно поступить аналогично с кусками 12-24, 11-25 и т.д. пока все не свернется. Не исключено что я каких-то еще ограничений не понимаю.
Расстояние между суставами всегда остается постоянным, при желании можно его сделать одном из степеней свободы, обычно оно фиксировано. Образно руки сами не растягиваются :).
Обычно в физических движках такое реализуют. Там же могут быть и примеры. Еще у меня брат на флеше рисует, часто пользуется такой штукой для анимации, правда там модель попроще.
Теоретически иерархию можно закрепить в любых точках, соответственно зафиксированные звенья не просчитываются алгоритмом. Алгоритм итеративный, постепенно приближается к целевому значению в принципе основной принцип описан по ссылке в моем комментарии выше.
Пример можно во многих 3д редакторах посмотреть (например в блендере), обычно это один из алгоритмов движения костей. К сожалению свой код не нашел :(.
Когда учился в институте делал свою игру, там была такая штука вроде руки робота, которая тянулась за игроком. Как я понимаю здесь что-то подобное — выбираются два звена цепи и притягиваются друг к другу. У меня для этого использовалась инверсная кинематика, возможно вам пригодится.
Помню как-то попросили комп сделать, блок питания не включался. Конденсаторы вздулись, а те что у меня были не подошли на место старых. Я такой колхоз устроил:
Так они из блока питания и торчали. Зато человек доволен остался :).
Браузер получает адрес с сервера вместе с остальным HTML кодом. Сервер берет локальный адрес из поля HTTP_X_FORWARDED_FOR. Туда его записывает прокси сервер, через который заходит интернет браузер.
Реальный адрес, через который работает прокси — REMOTE_ADDR.
На главной странице, вкладка «Ваш IP-адрес», мой адрес отображается как 192.168.1.4, как я понимаю должен быть внешний IP, при этом на странице со сканированием портов отображается правильный адрес и открытые порты.
На вкладке «Ваша система», браузер отображается как «Firefox 9.0 beta» хотя использую Seamonkey. В поле User-Agent, после Firefox, браузер себя правильно называет — SeaMonkey/2.6.1. Хотелось бы видеть реально используемый браузер.
Cookies — написано, что включены хотя я их всегда отключаю (и да, сайт показывает окно «Добро пожаловть на сайт»), Java в браузере тоже отключено, хотя на сайте показано обратное. ActiveX включено, хотя у моя ОС Debian linux.
Мой брат когда начинал работать с флешем тоже загорелся свой мультик нарисовать. Рисовал по мотивам книги Виктора Пелевина «Принц госплана». По времени получилось 42 минуты. Если кого-то заинтересует выкладываю ссылки на его сайт, мульт разбит на три части:
В описанном случае действительно если закрепленная петля не позволяет дотянуться до атома, скорее всего означает то что ее нельзя закреплять. Возможно «мягко» закрепить, то есть она будет двигаться но не так активно как незакрепленная часть.
Хотя опять же допускаю возможность такой комбинации поворотов, что без полного переворота всей петли будет невозможно дотянуться до некоторого атома. При переборе углов очевидно оптимальное расположение будет найдено, итеративно скорее всего — нет. Можно придумывать различные точки отката, скорее всего это не то что нужно. Выстроить сразу правильную петлю не думаю что получится, разве что методом Монте-Карло из различных начальных положений сворачивать (опять же нет гарантии правильности решения).
Лирическое отступление: мне кажется в природе в любом случае они сворачиваются из изначальной структуры под действием некоторых сил, стремясь образовать водородные связи и каким-то образом расположиться в пространстве. Мне все же кажется — это больше итеративный подход, нежели перебор всех углов с отсечением.
Скорее всего я что-то не понимаю, можете объяснить по этой картинке как петля может быть не такой?
Туда просто невозможно дотянуться в рамках данной модели.
Вообще если за ранее известны узлы между которыми могут образоваться водородные связи, например 14-22 на вашем изображении. Очевидно, что они соединяются цепочкой 15-16-...-20-21, свернув ее можно их соединить. При этом остальную часть в принципе можно не считать пусть висит как есть.
После того как первые два узла соединены весь сегменты 14-15-...-21-22 фиксируем и пробуем соединить узлы 13-23, так как сегмент уже фиксирован, будет гораздо проще это сделать.
Дальше можно поступить аналогично с кусками 12-24, 11-25 и т.д. пока все не свернется. Не исключено что я каких-то еще ограничений не понимаю.
Пример можно во многих 3д редакторах посмотреть (например в блендере), обычно это один из алгоритмов движения костей. К сожалению свой код не нашел :(.
Так они из блока питания и торчали. Зато человек доволен остался :).
Браузер получает адрес с сервера вместе с остальным HTML кодом. Сервер берет локальный адрес из поля HTTP_X_FORWARDED_FOR. Туда его записывает прокси сервер, через который заходит интернет браузер.
Реальный адрес, через который работает прокси — REMOTE_ADDR.
На главной странице, вкладка «Ваш IP-адрес», мой адрес отображается как 192.168.1.4, как я понимаю должен быть внешний IP, при этом на странице со сканированием портов отображается правильный адрес и открытые порты.
На вкладке «Ваша система», браузер отображается как «Firefox 9.0 beta» хотя использую Seamonkey. В поле User-Agent, после Firefox, браузер себя правильно называет — SeaMonkey/2.6.1. Хотелось бы видеть реально используемый браузер.
Cookies — написано, что включены хотя я их всегда отключаю (и да, сайт показывает окно «Добро пожаловть на сайт»), Java в браузере тоже отключено, хотя на сайте показано обратное. ActiveX включено, хотя у моя ОС Debian linux.
1. часть 1
2. часть 2
3. часть 3