Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › simulateVerlet实现问题
Tagged: rope
- This topic has 15 replies, 5 voices, and was last updated 5 years, 6 months ago by
Keneyr.
-
AuthorPosts
-
-
不用加弹力了
直接 a = g
-
– 你这压根没用 last_pos 即 x(t-1) 啊?直接 pos – pos 了
– 欧拉那边你做出来了吗?加了 dumping 的-
.J.
Participant欧拉加damping的做出来了。
我试过直接用last_position这个变量,但是发现这个值需要自己去赋值才能用,我没太想清楚该在哪个地方去赋值,我这里的做法是把[x(t)-x(t-1)]这个量,定义为一个静态变量dx = m->position - old_position;,其中m->position是更新后的位置,old_position是更新前的位置,然后这个值在下一次循环的时候,直接去使用,就相当于是[x(t)-x(t-1)]了。不知道这个思路是否正确。-
– 显式欧拉的带 damping 也没问题吗?每帧走多少步?我走100000才能稳下来显式真的不稳定。。。
– 你对 static 理解不对,m有个变量就是 last_pos, 维护更新这个就好-
.J.
Participant半隐式欧拉带damping最后就是来回摇摆,命令行参数-s 100,显式的不稳定,可能需要减小步长。
m->last_position这个值的更新,我有点绕糊涂了,比如我在更新m->position前,给m->last_position = m->position赋值,在计算m->position = m->position + (1-damping_factor)*(m->position - m->last_position) + a*delta_t*delta_t;的时候,(m->position - m->last_position)就变成(0,0)了。-
– 隐式最后应该停下来,显式增大到 100000 应该也能停下来才对
– 所以你应该算完 x(t+1) 再更新啊
-
-
-
-
-
老哥问下,如果按照这种写法的话,初始0时刻的时候的m->last_position是否需要设置初值呢(不设好像不报错,但感觉很变扭)。
-
.J.
Participantm->last_position已经在创建类的时候被初始化了。
-
-
AuthorPosts
- You must be logged in to reply to this topic.