?

Log in

разрыв шаблона - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

разрыв шаблона [мар. 27, 2013|02:41 am]
Anatoly Vorobey
[Tags|]

Вот эта ткань на Джаваскрипте, которую можно тянуть левой кнопкой мышки и рвать правой - весьма и весьма впечатляет. Главным образом тем, как мало там кода - см. правую колонку.

В обсуждении на реддите всплыла ссылка на разумно написанную статью, которая объясняет эту технику.
СсылкаОтветить

Comments:
From: dmpogo
2013-03-27 01:09 am
Она рвется даже когда просто двигать резко с нажатой левой кнопкой
(Ответить) (Thread)
[User Picture]From: argo_navis
2013-03-27 01:45 am
а еще оторванные куски внизу зачем-то двигаются
(Ответить) (Parent) (Thread)
[User Picture]From: lone_guardian
2013-03-27 02:41 am
Но это надо tear_distance понижать тогда, на дефолтных так порвать не получилось.
(Ответить) (Parent) (Thread)
From: dmpogo
2013-03-27 03:12 am
Я как запустил так сразу и порвал :(
(Ответить) (Parent) (Thread)
[User Picture]From: zelych
2013-03-27 04:30 am
Это специально сделано, там в 98-й строчке условие соответствующее.
(Ответить) (Parent) (Thread)
From: dmpogo
2013-03-27 04:50 am
Было бы удивительно, если бы в коде этого не было !
(Ответить) (Parent) (Thread)
From: dmpogo
2013-03-27 03:24 am
Сколько пафоса из тривиальностей типа итерационного метода.
(Ответить) (Thread)
[User Picture]From: plakhov
2013-03-27 06:53 am
Любая "игровая физика" использует тривиальные методы. Проблема в том, что 19 из 20 тривиальных методов не работают ("взрываются" или дают неправдоподобно выглядящие результаты), а работающий двадцатый сильно зависит от констант. Я уже в геймдеве давно не работаю, но если брать по состоянию на 5 лет назад, очень полезная демка: всё вменяемо выглядит, ничего не расходится, приведены исходники со всеми константами.
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 07:21 am
Нифига там обычно не взрывается, это у вас, программистов, просто руки кривые, не можете правильно закодить. Да и кодить надо на трезвую голову, а не пива нахлебавшись. То-то у вас и АИ всегда ведёт себя как бухой.
(Ответить) (Parent) (Thread)
[User Picture]From: plakhov
2013-03-27 07:23 am
Ой-ой. Идите сначала свой холодный термояд доделайте, потом разговаривать будем. 50 лет уж обещаете, денег под триллион сожрали. Недоучки, на матмех поступить не осилившие.
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 07:29 am
Вот нифига. Когда я поступал, на матмех ценз был на 1 балл меньше. Туда пошли те, кого на физфак не взяли.

ЗЫ: Зачем вам холодный термояд? На что халявить будете? Вода у всех есть, а нефть -- не у всех. Улавливаете?

Edited at 2013-03-27 07:31 (UTC)
(Ответить) (Parent) (Thread)
[User Picture]From: plakhov
2013-03-27 07:38 am
О, я-то улавливаю!

— Разве ты не слышал сказки о глупом коте? — усмехнулся одноглазый. — У одного человека в доме завелись мыши. Чтобы избавиться от них, он подобрал где-то бездомного ободранного кота. Глупый кот за одну ночь истребил всех мышей; наутро хозяин, видя, что больше никто не будет причинять ущерба его запасам, выгнал кота на улицу из уютного дома, где были мягкие подушки, теплый очаг и блюдечко с молоком…

Ничего, массовые поучающие расстрелы физиков всех нас спасут.
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 07:46 am
Появляется кот -- исчезают мыши. Исчезает кот -- появляются мыши. Всё логично. А ещё считаете себя интеллектуальной элитой!

Судьбу запасов и дальнешие отношения с котом предлагаю предсказать самостоятельно в качестве упражнения.
(Ответить) (Parent) (Thread)
[User Picture]From: plakhov
2013-03-27 08:13 am
Я не вступаю в отношения с котами, поэтому предсказывать их развитие не возьмусь.
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 08:32 am
Ещё бы, с такими как вы и без всяких котов мыши не уживаются.
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2013-03-27 09:08 am
хватит троллить, а?
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 09:16 am
Ну хватит, так хватит. Но это же plakhov!
(Ответить) (Parent) (Thread)
[User Picture]From: plakhov
2013-03-27 09:40 am
Извините, это я виноват. Мне показалось забавным "отреагировать", но это засоряет комментарии, и я больше не буду.
(Ответить) (Parent) (Thread)
From: soarer777
2013-03-27 09:57 am
Да ладно, диалог получился чуть ли не более забавным, чем сама тема. Но тема офигенно, да.
(Ответить) (Parent) (Thread)
[User Picture]From: janatem
2013-03-27 07:36 am
Хм, а я уже привык было к тому, что kray_zemli имеет толщину ниже чем средняя по уютненькому.
(Ответить) (Parent) (Thread)
[User Picture]From: plakhov
2013-03-27 07:38 am
Это перформанс!
(Ответить) (Parent) (Thread)
[User Picture]From: eisenberg
2013-03-27 07:28 am
Во-во. Причём в константах тоже легко оторваться от реальности и уплыть в свободное плавание ("гранаты весят 200 кг, потому что иначе они не тонут в воде, потому что у воды плотность 20, потому что иначе в ней тонут ящики, которые..." - да не у Вас ли я это читал?)
(Ответить) (Parent) (Thread)
[User Picture]From: plakhov
2013-03-27 07:29 am
Не у меня, но история очень знакомая.
(Ответить) (Parent) (Thread)
[User Picture]From: janatem
2013-03-27 07:30 am
Забавно, порядок обхода при обсчете важен: если увеличить гравитацию на порядок, то начинает само отрываться, причем всегда справа налево, хотя должно бы стохастично.

Интересно, усложнится ли код радикально, если имитировать настоящую физичную параллельность. Вроде бы нет — достаточно продублировать состояние и вычислять в чисто функциональном стиле next_state = f(curr_state), а потом итерационно менять переменные.
(Ответить) (Thread)
[User Picture]From: plakhov
2013-03-27 07:41 am
Ещё интересно, что начинает отрываться на волшебном числе 4993 (не на 5000).
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2013-03-27 08:13 am
А у меня начинает рваться на магическом числе 7371.
(Ответить) (Parent) (Thread)
[User Picture]From: plakhov
2013-03-27 08:17 am
Это зависит от physics_accuracy. У меня было выставлено 2. Вообще я как-то не ожидал, что codepen запоминает между моими сессиями все мои изменения.
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2013-03-27 08:21 am
Действительно, странная организация.
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 11:06 am
Код усложнится, но главное:

1. Либо будет использоваться неявная схема, которой сопутствует совсем другой порядок по быстродействию (эдак что-нибудь типа куба от числа вершин)

2. Либо будет использоваться явная схема, но с уловием устойчивости, связанным с ограничением скорости распространения сигнала (а это значит, что жёсткость растянутой ткани должна быть конечной).

Последовательный обход является "костылём", принцип действия которого основан на нефизичном сочетании подходов 1 и 2. Не смотря на это, при достаточно малом временном шаге это может работать довольно неплохо для широкого класса условий.
(Ответить) (Parent) (Thread)
[User Picture]From: janatem
2013-03-27 11:28 am
1. Вовсе не обязательно будет O(N^3). Куб получается, если тупо решать линейную систему без учета ее особенностей. Но, во-первых, матрица будет не какая попало, а, скорее всего, малодиагональной, во-вторых, точность особо не нужна, поэтому скорее всего сработают итерационные методы с малым количеством итераций (что, если повезет, будет линейно по N).

А последовательный обход иногда «чисто случайно» оказывается доказуемо эквивалентен «честному» методу. (Был пример с решением уравнения теплопроводности, забыл, в честь кого названный. Там портить состояние можно в любом порядке, что не влияет на результат.) Хотя конкретно в данном случае, как видим, это не так.
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 12:41 pm
Ну, будет, допустим, O(N^2). А если замутить какую-нибудь там приближённую факторизацию матричных операторов, так и все O(N), наверное, можно добиться. Но вылезут и новые проблемы. Со сходимостью итераций, например.
(Ответить) (Parent) (Thread)
From: dmpogo
2013-03-27 02:42 pm
Так мы матрицу прекондишем и интерционные свойства улучшим :). Но в целом конечно неявный интегратор растянуть на большие N труднее.
(Ответить) (Parent) (Thread)
[User Picture]From: askold
2013-03-27 07:39 am
А вот если ткань потянуть наверх, так колбасить начинает^^
(Ответить) (Thread)
[User Picture]From: xenko
2013-03-27 10:18 am
в бытность бесядовский подкинул задачу.. невесть что, конкретные данные можно прогнать через ансис и спать спокойно

задача о гибком крыле
например, парусе

нужно в зависимости от угла гика вычислить напряжения в точках паруса и собственно их положение в пространстве
усложнение 1. парус тянется
усложнение 2. скорость потока на разных срезах (высотах) разная

до сих пор никто не решил
все вот тоже - тряпочками махали
(Ответить) (Thread)
[User Picture]From: kray_zemli
2013-03-27 10:52 am
Да это задача для целого института!

1. Моделировать движение лодки в море с этими его волнами
2. Моделировать гибкий парус
3. Моделировать трубулентное обтекание
4. Все эти модели закодить, да так, чтобы пункты 1,2,3 были хорошо согласованны друг с другом.
(Ответить) (Parent) (Thread)
[User Picture]From: xenko
2013-03-27 10:59 am
первый п. не суть - мы и экранолеты так же моделируем
с гибким парусом вообще дикие проблемы
бесядовский и иже с ним только тему жуковского признают - а она не работает, а им надо чтоб в русле
насчет турбулентного - скажем так, я лично его просто как неустойчивое ламинарное рассматриваю - в определенных масштабах

а про целый институт - видели мы. всю работу делают две башки а стопицот людей для замены воды в кулере
(Ответить) (Parent) (Thread)
[User Picture]From: kray_zemli
2013-03-27 11:14 am
Ну, две башки тоже можно, но желательно башки 4 из разных лабораторий. Желательно ещё наличие какого-нибудь координатора проекта, который будет им воду в кулере менять.

Хотя, конечно, в каждой из 4 лабораторий есть завлаб, который не захочет проходить мимо этого проекта и его фондов, а у него есть лояльные люди, которым надо что-нибудь предложить... Откуда возникают те проблемы, о которых вы говорите.

И проблема эта решается просто: выделением этих 5 человек в отдельную лабораторию. Это неизбежно означает пересмотр отношений с прежними завлабами и их начальством. Поэтому, оно имеет смысл только тогда, когда предполагается долгосрочная многолетняя научная работа.

Для разового проекта, очевидно, заморачиваться с организационными проблемами никто не будет, откуда массово и возникают те проблемы, о которых вы пишете.
(Ответить) (Parent) (Thread)
[User Picture]From: xenko
2013-03-27 11:26 am
я долго наблюдаю жизнь нашего космоса через призму одного института
там есть один топливник, один двигателист и один технолог
все остальные реальная массовка
отплоттить чертеж, принести кофе, перевести на английский, пососать палец о госбезопасности
(Ответить) (Parent) (Thread)
From: dmpogo
2013-03-27 11:18 am
Что кстати не обязательно означает что эти две башки сделают свою работу также хорошо без наличия этих стопицот вокруг.
(Ответить) (Parent) (Thread)
[User Picture]From: xenko
2013-03-27 11:29 am
отлично они делают
индусам бумажки не нужны, а кофе у них лучше
и сварщики трезвые
(Ответить) (Parent) (Thread)
From: dmpogo
2013-03-27 03:01 pm
Кофе у индусов лучше ?? где такое ?
(Ответить) (Parent) (Thread)
From: onanymous.myopenid.com
2013-03-27 01:24 pm
http://www.lenta.ru/news/2013/03/26/excel/
(Ответить) (Thread)
From: morfizm
2013-03-28 02:08 am
А у меня разрыва шаблона не произошло!
Противный UI баг моментально вернул всё на свои места:
Если нажимаешь мышу на ткани, а потом уводишь за пределы canvas, и там отпускаешь, а потом возвращаешь мышь на ткань, то мышь "нажата" (отпускание не зафиксировано).
(Ответить) (Thread)