
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Страницы: (4) 1 2 [3] 4 все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
а чо ето она утебя так дико тормозит?? ка сделать чтобы она не тормозила? и вобще помоему никого там не выворачивает
|
Сообщ.
#32
,
|
|
|
Ну дык шаг-то 1Е-4, вычисления типом extended, один фрейм есть 100 циклов, да еще я его вообще никак еще не оптимизировал.
А ты tor.dat ему в параметры подсовывал? У меня так после капитального сжатия вывернутый кусок тора проскочил насквозь еще нормальный ![]() |
Сообщ.
#33
,
|
|||||
|
ну, а в какой строчке ето записано??
подсовывал, но он у меня считался настолько медленно, что я его вырубил, не дождавшись действа |
Сообщ.
#34
,
|
|||||
|
Все есть в константах ![]() ![]() Кстати константы там все откомментированы.
Хе, а у тебя какой комп? У меня Р3-866, 6фпс считает ![]() ![]() Если хочешь, можешь включить давление, есть там такая строчка pressflag:=false; а строкой выше выражение для определения, а можно ли давление включать. |
Сообщ.
#35
,
|
|
|
да, чото их не по детски колбасит.....
я думаю у тебя глюк в программе |
Сообщ.
#36
,
|
|
|
А не подскажешь где?
![]() ![]() ![]() |
Сообщ.
#37
,
|
|
|
а если шаг в 10 раз увеличить, то их тоже колбасить начинает! мож параметры надо поменять?? ты кстати центр каждый раз рассчитываешь?
зы.а мож ты у пружин всётаки полярность перепутал?? |
Сообщ.
#38
,
|
|
|
жёсткость 283, давление 150, для всех фигур, реакция опоры 6, шаг 0.001. всё вроде правильно.
|
Сообщ.
#39
,
|
|||||||||
|
Неа ![]() ![]() ![]()
Я так понял, если pe*dt>1, начинают сказываться машинные нули ![]() ![]() ![]()
Ага, ну и круто. А тор что, не выворачивается? Ща проверю. И правда, прыгает ![]()
Хм. Спасибо, это же громадный гемор
![]() ![]() |
Сообщ.
#40
,
|
|||||
|
почему нули?? помоему как раз наоборот
ыы? я ж совсем другое имел в виду! ежели ты его вычисляешь на первом шаге, то утебя ведь фигура едет, а центр стоит!! так что надо на каждом шаге его вычислять, а тормозит у тебя имхо главным образом графика. и вобще, как ты пружинки задаёшь? только по сетке или каждая точка соединена с каждой другой?? |
Сообщ.
#41
,
|
|||||||||
|
Я имел в виду, при каждом шаге неизбежны ошибки в примерно 1е-19 в расстоянии между точками. Потом в applysprings етот 1е-19 множится на ре, а в updatevelocity на дт, в результате ошибка нарастает лавинообразно.
Я его вычислял вместо одного раза 504 ![]() ![]()
По сетке, там есть массив masgran, он и хранит всю сетку. Я по нему прохожу до инитграфа, генерируя masspring достаточно тупым алгоритмом, а именно проверяю, есть ли уже пружина, связывающая эти вершины, и если нет, связываю.
Это вполне возможно, я не подвергал ету прогу анализу по времени. Там в среднем 6 раз считаются нормали граней, правда они динамические, но мне влом делать еще один массив в куче.
|
Сообщ.
#42
,
|
|||||
|
тоже мне неточность нашёл! там возникают неточности куда более чудовищного масштаба. а именно, когда ты подвигаешь точку на конечное приращение, ты говоришь, что её скорость постоянна на всём промежутке dt, хотя она в натуре меняется, и когда ты приращиваешь скорости, ты опять же говоришь что сила постоянна. поетому шаг интегрирования берут не более 1/10 периода самого быстрого колебания. Добавлено в
кинь мне исправленную версию! самому лень разбираться |
Сообщ.
#43
,
|
|||||
|
Здесь ты неправ, когда я двигаю точку, я считаю, что скорость в процессе меняется, по линейному закону, а вот с силой это действительно так, она считается неизменной на всем dt.
Ааа, не любишь копаться в чужом коде? Согласен, темный лес. Щас. (Я сейчас не дома, а править там почти нечего) Хм. А здесь тор сначала сплющился, а потом все-таки прыгнул, восстановив форму. Прикреплённый файл ![]() |
Сообщ.
#44
,
|
|||
|
не! когда ты считаешь что dx=v*dt, то v у тебя постоянно. и вобще чото у тебя с пружинками. я давление увеличил, а кубик симметрию потерял. да и вобще чото не такое уж большое увеличение скорости ![]() |
Сообщ.
#45
,
|
|
|
:) У меня dx=(2v+dv)*dt/2, а точнее dx=v*dt,dx:=(dx+(v+dv)*dt)/2;
|