COL865: Special Topics in Computer Applications Physics-Based Animation 4 Mass-spring systems
Particle systems Consider n point masses in R 3 ith particle has mass m i, position x i, velocity v i External forces on particles: gravity, air resistance, [Reeves 1983] Internal forces between particles Inverse-square attraction: solar system, galaxies Springs between pairs of particles Universe Sandbox
Springs x i x j f ij f ji A spring is defined by its rest length l 0 and spring constant k s. In 1D: f = k s (l l 0 ) In general: f ij = k s ( x i x j l 0 ) d ij where d ij = (x i x j )/ x i x j Or, define potential energy U ij = ½ k s ( x ij l 0 ) 2 k d = 0 Then f ij = U ij / x i Also add a damping force k d (v ij d ij) d ij k d > 0
<latexit sha1_base64="ysrjpijdhzulvhghtdb6j+apr5m=">aaadqnicbdldatswfabgnd5p2/2l22vvxmjgfypyoddddak7wqufbixth50gwzycuuk2kpzfgd/knma36wp0bsanhlxscwyoz6djsqffowfa+p7dzsb79pjj0929/wfpx7x8ntx4fagzqmeywxnp1fwmnofmkplhhporxbekyk4u45vpjv+uinisk99nmzo5qklklgfkbgoxpi6oqrikbdjljwbypynwc1y/jmz1piafydunnibsazec+wn/m2a/cnpgbnpxvjgyhfgs4uiqatbhwoebn5t5hzrhmjn6pyo0yrg+qskjbsirihpebu5yw3c2k0cakftiazdzt6jcqutsxhzms3hdtsb5pwslqz/okybzwhcj7xeibycmg027ymiuwyaxnkbymbtxijfi9slypm6tgkwswlo0wyepymg/fzhkj86eqdkpoqsuhtpb9xj/45hc3lcl0khzr1uoq27t2sf1f0shy/6pvw6vurxuqdrf1mg0iyconntx1mhtlp45efy31zhoxr5+cdezb/44+ho0mk7bi7kldsfb8b4e4bhmwrdwdmyag1/gn/gdbr0p3jfvhxfetx3stdvvwnbwkr99jz4s</latexit> <latexit sha1_base64="ysrjpijdhzulvhghtdb6j+apr5m=">aaadqnicbdldatswfabgnd5p2/2l22vvxmjgfypyoddddak7wqufbixth50gwzycuuk2kpzfgd/knma36wp0bsanhlxscwyoz6djsqffowfa+p7dzsb79pjj0929/wfpx7x8ntx4fagzqmeywxnp1fwmnofmkplhhporxbekyk4u45vpjv+uinisk99nmzo5qklklgfkbgoxpi6oqrikbdjljwbypynwc1y/jmz1piafydunnibsazec+wn/m2a/cnpgbnpxvjgyhfgs4uiqatbhwoebn5t5hzrhmjn6pyo0yrg+qskjbsirihpebu5yw3c2k0cakftiazdzt6jcqutsxhzms3hdtsb5pwslqz/okybzwhcj7xeibycmg027ymiuwyaxnkbymbtxijfi9slypm6tgkwswlo0wyepymg/fzhkj86eqdkpoqsuhtpb9xj/45hc3lcl0khzr1uoq27t2sf1f0shy/6pvw6vurxuqdrf1mg0iyconntx1mhtlp45efy31zhoxr5+cdezb/44+ho0mk7bi7kldsfb8b4e4bhmwrdwdmyag1/gn/gdbr0p3jfvhxfetx3stdvvwnbwkr99jz4s</latexit> <latexit sha1_base64="ysrjpijdhzulvhghtdb6j+apr5m=">aaadqnicbdldatswfabgnd5p2/2l22vvxmjgfypyoddddak7wqufbixth50gwzycuuk2kpzfgd/knma36wp0bsanhlxscwyoz6djsqffowfa+p7dzsb79pjj0929/wfpx7x8ntx4fagzqmeywxnp1fwmnofmkplhhporxbekyk4u45vpjv+uinisk99nmzo5qklklgfkbgoxpi6oqrikbdjljwbypynwc1y/jmz1piafydunnibsazec+wn/m2a/cnpgbnpxvjgyhfgs4uiqatbhwoebn5t5hzrhmjn6pyo0yrg+qskjbsirihpebu5yw3c2k0cakftiazdzt6jcqutsxhzms3hdtsb5pwslqz/okybzwhcj7xeibycmg027ymiuwyaxnkbymbtxijfi9slypm6tgkwswlo0wyepymg/fzhkj86eqdkpoqsuhtpb9xj/45hc3lcl0khzr1uoq27t2sf1f0shy/6pvw6vurxuqdrf1mg0iyconntx1mhtlp45efy31zhoxr5+cdezb/44+ho0mk7bi7kldsfb8b4e4bhmwrdwdmyag1/gn/gdbr0p3jfvhxfetx3stdvvwnbwkr99jz4s</latexit> <latexit sha1_base64="ysrjpijdhzulvhghtdb6j+apr5m=">aaadqnicbdldatswfabgnd5p2/2l22vvxmjgfypyoddddak7wqufbixth50gwzycuuk2kpzfgd/knma36wp0bsanhlxscwyoz6djsqffowfa+p7dzsb79pjj0929/wfpx7x8ntx4fagzqmeywxnp1fwmnofmkplhhporxbekyk4u45vpjv+uinisk99nmzo5qklklgfkbgoxpi6oqrikbdjljwbypynwc1y/jmz1piafydunnibsazec+wn/m2a/cnpgbnpxvjgyhfgs4uiqatbhwoebn5t5hzrhmjn6pyo0yrg+qskjbsirihpebu5yw3c2k0cakftiazdzt6jcqutsxhzms3hdtsb5pwslqz/okybzwhcj7xeibycmg027ymiuwyaxnkbymbtxijfi9slypm6tgkwswlo0wyepymg/fzhkj86eqdkpoqsuhtpb9xj/45hc3lcl0khzr1uoq27t2sf1f0shy/6pvw6vurxuqdrf1mg0iyconntx1mhtlp45efy31zhoxr5+cdezb/44+ho0mk7bi7kldsfb8b4e4bhmwrdwdmyag1/gn/gdbr0p3jfvhxfetx3stdvvwnbwkr99jz4s</latexit> <latexit sha1_base64="pvln5zyt4ba1vz5iq4pjfr8cmj0=">aaad1hicbdjpi9qwfadw7nq/6/hvvo9egopiqyz2efqidhhxfxzwcgyxjknj07qttkllktyptsfx6tfym/ghvorvdgzkm+kgwl7ye69jh4mkjcnt+78obt6t23fuht4b3n/w8nhj0dgtucplseim5fkulyosamyenwmmm3pzsip5lngl6opd5xcvlyrl4rouc7rkobusyqrrsxsomeokjg3iwk8khzfah6y9nuowvnwpurwy1xchoztc3zs8zuk64uyvjsb+xn8m2a+cxtagu3eehg0wkm5jyanqjmnklqk/0msgs81irtshkhutmlnckv2yugbo1blz9kkfl8xkdjncmkdoufm1kxrmlap5zdk7cyvxuswbbfhq5n2yyaionrvku1fszldnsgssjjmkrge1ctcrzjwvkhu2vdcm/xu7eb5jlq703p80etdzsqx9qnlosygbflfndxfbhpp/hcwqdgyjsfd0a6xf0q1dw7h2sbaw7n+4srhyaxmlexdtc1mxtyw8cfhuwlmxzyw8a7vrglixrx/mjyebpwk+vrlpp7uleqiegefgfqjawzafh8e5maecfolf4a/46829r9437/s2dxcwq3kk9ob34x+xq07p</latexit> <latexit sha1_base64="pvln5zyt4ba1vz5iq4pjfr8cmj0=">aaad1hicbdjpi9qwfadw7nq/6/hvvo9egopiqyz2efqidhhxfxzwcgyxjknj07qttkllktyptsfx6tfym/ghvorvdgzkm+kgwl7ye69jh4mkjcnt+78obt6t23fuht4b3n/w8nhj0dgtucplseim5fkulyosamyenwmmm3pzsip5lngl6opd5xcvlyrl4rouc7rkobusyqrrsxsomeokjg3iwk8khzfah6y9nuowvnwpurwy1xchoztc3zs8zuk64uyvjsb+xn8m2a+cxtagu3eehg0wkm5jyanqjmnklqk/0msgs81irtshkhutmlnckv2yugbo1blz9kkfl8xkdjncmkdoufm1kxrmlap5zdk7cyvxuswbbfhq5n2yyaionrvku1fszldnsgssjjmkrge1ctcrzjwvkhu2vdcm/xu7eb5jlq703p80etdzsqx9qnlosygbflfndxfbhpp/hcwqdgyjsfd0a6xf0q1dw7h2sbaw7n+4srhyaxmlexdtc1mxtyw8cfhuwlmxzyw8a7vrglixrx/mjyebpwk+vrlpp7uleqiegefgfqjawzafh8e5maecfolf4a/46829r9437/s2dxcwq3kk9ob34x+xq07p</latexit> <latexit sha1_base64="pvln5zyt4ba1vz5iq4pjfr8cmj0=">aaad1hicbdjpi9qwfadw7nq/6/hvvo9egopiqyz2efqidhhxfxzwcgyxjknj07qttkllktyptsfx6tfym/ghvorvdgzkm+kgwl7ye69jh4mkjcnt+78obt6t23fuht4b3n/w8nhj0dgtucplseim5fkulyosamyenwmmm3pzsip5lngl6opd5xcvlyrl4rouc7rkobusyqrrsxsomeokjg3iwk8khzfah6y9nuowvnwpurwy1xchoztc3zs8zuk64uyvjsb+xn8m2a+cxtagu3eehg0wkm5jyanqjmnklqk/0msgs81irtshkhutmlnckv2yugbo1blz9kkfl8xkdjncmkdoufm1kxrmlap5zdk7cyvxuswbbfhq5n2yyaionrvku1fszldnsgssjjmkrge1ctcrzjwvkhu2vdcm/xu7eb5jlq703p80etdzsqx9qnlosygbflfndxfbhpp/hcwqdgyjsfd0a6xf0q1dw7h2sbaw7n+4srhyaxmlexdtc1mxtyw8cfhuwlmxzyw8a7vrglixrx/mjyebpwk+vrlpp7uleqiegefgfqjawzafh8e5maecfolf4a/46829r9437/s2dxcwq3kk9ob34x+xq07p</latexit> <latexit sha1_base64="pvln5zyt4ba1vz5iq4pjfr8cmj0=">aaad1hicbdjpi9qwfadw7nq/6/hvvo9egopiqyz2efqidhhxfxzwcgyxjknj07qttkllktyptsfx6tfym/ghvorvdgzkm+kgwl7ye69jh4mkjcnt+78obt6t23fuht4b3n/w8nhj0dgtucplseim5fkulyosamyenwmmm3pzsip5lngl6opd5xcvlyrl4rouc7rkobusyqrrsxsomeokjg3iwk8khzfah6y9nuowvnwpurwy1xchoztc3zs8zuk64uyvjsb+xn8m2a+cxtagu3eehg0wkm5jyanqjmnklqk/0msgs81irtshkhutmlnckv2yugbo1blz9kkfl8xkdjncmkdoufm1kxrmlap5zdk7cyvxuswbbfhq5n2yyaionrvku1fszldnsgssjjmkrge1ctcrzjwvkhu2vdcm/xu7eb5jlq703p80etdzsqx9qnlosygbflfndxfbhpp/hcwqdgyjsfd0a6xf0q1dw7h2sbaw7n+4srhyaxmlexdtc1mxtyw8cfhuwlmxzyw8a7vrglixrx/mjyebpwk+vrlpp7uleqiegefgfqjawzafh8e5maecfolf4a/46829r9437/s2dxcwq3kk9ob34x+xq07p</latexit> Particle dynamics Total force f i on particle i = sum of all forces acting on it (which can depend on positions, velocities of all other particles!) Equations of motion: or in 1st-order form: d 2 x i dt 2 = f i m i for all i dx i dt = v i, dv i dt = f i m i for all i System of ODEs in 2n vector-valued variables x i, v i
<latexit sha1_base64="phbgh0p2eg8ezjvfu9ie2ou9ong=">aaaer3iclzlfbtmwfmadewcufytccmnrixgbsljnagkhvekgtzo0jlpoakpwhce1fjuz7yrwuv6gp+ew7ngbnc6a6+wcleu+/n7+jh2fexuzlcrzfjp7n9ybt27v3xncvxf/wcod4amzmzcckxnos1ycr0isjhiyu1rl5lwqbleoi/po4l3l5xurkub8o9ouzmlqymlcmvjacofomyarcncbq2olgiybv6fqgoiklnervgrdn8e69geqqd1ptnmv50p2cg8ij/9shw+hba46c9uzv5b5xsc4vcxrppifu/17+mvulot+s9ylsmkjju0ksci1upsopbh5y287yd/wu2aeuneadvcwqzzjkhguciakxpheozy1eorijdsdojskqpgcpwshq44ykct6w+ygptnkdjnc6i8rufvnr42ylbsw6z3tm0mbtej1bfgq5pwyprwofeh46qckzkdkydszmkacyjvtdicwopquek+qlo3snbvzcmaroolk7fyjfi+9fostlzhndokxdhqtjbr2mp6nowtifpuqg5d3vclawvaudbi24caam37iyscv7u0mmngwnwbqwymdhtnw2idhnjwx4enttqnvn18/ojumfw/sfzgctaddy+6dj+apea588apmwxtwcmyao1+db85354fru3p3k/v5auue03keg53h0l+fpp2o</latexit> <latexit sha1_base64="phbgh0p2eg8ezjvfu9ie2ou9ong=">aaaer3iclzlfbtmwfmadewcufytccmnrixgbsljnagkhvekgtzo0jlpoakpwhce1fjuz7yrwuv6gp+ew7ngbnc6a6+wcleu+/n7+jh2fexuzlcrzfjp7n9ybt27v3xncvxf/wcod4amzmzcckxnos1ycr0isjhiyu1rl5lwqbleoi/po4l3l5xurkub8o9ouzmlqymlcmvjacofomyarcncbq2olgiybv6fqgoiklnervgrdn8e69geqqd1ptnmv50p2cg8ij/9shw+hba46c9uzv5b5xsc4vcxrppifu/17+mvulot+s9ylsmkjju0ksci1upsopbh5y287yd/wu2aeuneadvcwqzzjkhguciakxpheozy1eorijdsdojskqpgcpwshq44ykct6w+ygptnkdjnc6i8rufvnr42ylbsw6z3tm0mbtej1bfgq5pwyprwofeh46qckzkdkydszmkacyjvtdicwopquek+qlo3snbvzcmaroolk7fyjfi+9fostlzhndokxdhqtjbr2mp6nowtifpuqg5d3vclawvaudbi24caam37iyscv7u0mmngwnwbqwymdhtnw2idhnjwx4enttqnvn18/ojumfw/sfzgctaddy+6dj+apea588apmwxtwcmyao1+db85354fru3p3k/v5auue03keg53h0l+fpp2o</latexit> <latexit sha1_base64="phbgh0p2eg8ezjvfu9ie2ou9ong=">aaaer3iclzlfbtmwfmadewcufytccmnrixgbsljnagkhvekgtzo0jlpoakpwhce1fjuz7yrwuv6gp+ew7ngbnc6a6+wcleu+/n7+jh2fexuzlcrzfjp7n9ybt27v3xncvxf/wcod4amzmzcckxnos1ycr0isjhiyu1rl5lwqbleoi/po4l3l5xurkub8o9ouzmlqymlcmvjacofomyarcncbq2olgiybv6fqgoiklnervgrdn8e69geqqd1ptnmv50p2cg8ij/9shw+hba46c9uzv5b5xsc4vcxrppifu/17+mvulot+s9ylsmkjju0ksci1upsopbh5y287yd/wu2aeuneadvcwqzzjkhguciakxpheozy1eorijdsdojskqpgcpwshq44ykct6w+ygptnkdjnc6i8rufvnr42ylbsw6z3tm0mbtej1bfgq5pwyprwofeh46qckzkdkydszmkacyjvtdicwopquek+qlo3snbvzcmaroolk7fyjfi+9fostlzhndokxdhqtjbr2mp6nowtifpuqg5d3vclawvaudbi24caam37iyscv7u0mmngwnwbqwymdhtnw2idhnjwx4enttqnvn18/ojumfw/sfzgctaddy+6dj+apea588apmwxtwcmyao1+db85354fru3p3k/v5auue03keg53h0l+fpp2o</latexit> <latexit sha1_base64="phbgh0p2eg8ezjvfu9ie2ou9ong=">aaaer3iclzlfbtmwfmadewcufytccmnrixgbsljnagkhvekgtzo0jlpoakpwhce1fjuz7yrwuv6gp+ew7ngbnc6a6+wcleu+/n7+jh2fexuzlcrzfjp7n9ybt27v3xncvxf/wcod4amzmzcckxnos1ycr0isjhiyu1rl5lwqbleoi/po4l3l5xurkub8o9ouzmlqymlcmvjacofomyarcncbq2olgiybv6fqgoiklnervgrdn8e69geqqd1ptnmv50p2cg8ij/9shw+hba46c9uzv5b5xsc4vcxrppifu/17+mvulot+s9ylsmkjju0ksci1upsopbh5y287yd/wu2aeuneadvcwqzzjkhguciakxpheozy1eorijdsdojskqpgcpwshq44ykct6w+ygptnkdjnc6i8rufvnr42ylbsw6z3tm0mbtej1bfgq5pwyprwofeh46qckzkdkydszmkacyjvtdicwopquek+qlo3snbvzcmaroolk7fyjfi+9fostlzhndokxdhqtjbr2mp6nowtifpuqg5d3vclawvaudbi24caam37iyscv7u0mmngwnwbqwymdhtnw2idhnjwx4enttqnvn18/ojumfw/sfzgctaddy+6dj+apea588apmwxtwcmyao1+db85354fru3p3k/v5auue03keg53h0l+fpp2o</latexit> <latexit sha1_base64="slzgnamztw5w2ilc45fyhzwzrqm=">aaadsnicbzlnatwwemevdduk6dempfyiuhr6wuwqsc+lc700guak3sr0tsyylhtf9gekewnj/dh9ml7bq9+m8sytwrsdqn/nb0yadrpnnbkbhr/3rsgdh4/2dx4fpnn67pml8dhlk6mkteickk70tywn5uzsuwww05tcuyxitq/j208tv95qbzisx22v06xamwqpi9g612r8ezxwa0qxzzisy4gtzmwdylueeyjup97um0rz03kkojl5f7oat8jpudu4ffenjqczy9xraiesrqpbpsucg7oiwtwua6wti5w2h6gwnmfkfmd04ategpplvf1pa986twjtpd2sfm69fkanhtgvif2kk3bt+qx1/o8tcpu+x9zm5owlktw/lbycwgxbtsgeauosr5zardnxkyrrrdgxrrk7rxara5at7c5pxl/cwvnj74gsarsooqspa9rwogvmmgemf3gcqtjih0opymgu9rdu55yelpuw8ma1vhjj4u0/n/vg2oezb7m+pppgwr+ee/c8dy88eng04xj1h28oro6nutinvpxmzrnuma/aa/agvamroauz8blcgjkg4dv4ax6cx8fj8c3aabkphe11oa/ajgx8dyy9qg8=</latexit> <latexit sha1_base64="slzgnamztw5w2ilc45fyhzwzrqm=">aaadsnicbzlnatwwemevdduk6dempfyiuhr6wuwqsc+lc700guak3sr0tsyylhtf9gekewnj/dh9ml7bq9+m8sytwrsdqn/nb0yadrpnnbkbhr/3rsgdh4/2dx4fpnn67pml8dhlk6mkteickk70tywn5uzsuwww05tcuyxitq/j208tv95qbzisx22v06xamwqpi9g612r8ezxwa0qxzzisy4gtzmwdylueeyjup97um0rz03kkojl5f7oat8jpudu4ffenjqczy9xraiesrqpbpsucg7oiwtwua6wti5w2h6gwnmfkfmd04ategpplvf1pa986twjtpd2sfm69fkanhtgvif2kk3bt+qx1/o8tcpu+x9zm5owlktw/lbycwgxbtsgeauosr5zardnxkyrrrdgxrrk7rxara5at7c5pxl/cwvnj74gsarsooqspa9rwogvmmgemf3gcqtjih0opymgu9rdu55yelpuw8ma1vhjj4u0/n/vg2oezb7m+pppgwr+ee/c8dy88eng04xj1h28oro6nutinvpxmzrnuma/aa/agvamroauz8blcgjkg4dv4ax6cx8fj8c3aabkphe11oa/ajgx8dyy9qg8=</latexit> <latexit sha1_base64="slzgnamztw5w2ilc45fyhzwzrqm=">aaadsnicbzlnatwwemevdduk6dempfyiuhr6wuwqsc+lc700guak3sr0tsyylhtf9gekewnj/dh9ml7bq9+m8sytwrsdqn/nb0yadrpnnbkbhr/3rsgdh4/2dx4fpnn67pml8dhlk6mkteickk70tywn5uzsuwww05tcuyxitq/j208tv95qbzisx22v06xamwqpi9g612r8ezxwa0qxzzisy4gtzmwdylueeyjup97um0rz03kkojl5f7oat8jpudu4ffenjqczy9xraiesrqpbpsucg7oiwtwua6wti5w2h6gwnmfkfmd04ategpplvf1pa986twjtpd2sfm69fkanhtgvif2kk3bt+qx1/o8tcpu+x9zm5owlktw/lbycwgxbtsgeauosr5zardnxkyrrrdgxrrk7rxara5at7c5pxl/cwvnj74gsarsooqspa9rwogvmmgemf3gcqtjih0opymgu9rdu55yelpuw8ma1vhjj4u0/n/vg2oezb7m+pppgwr+ee/c8dy88eng04xj1h28oro6nutinvpxmzrnuma/aa/agvamroauz8blcgjkg4dv4ax6cx8fj8c3aabkphe11oa/ajgx8dyy9qg8=</latexit> <latexit sha1_base64="slzgnamztw5w2ilc45fyhzwzrqm=">aaadsnicbzlnatwwemevdduk6dempfyiuhr6wuwqsc+lc700guak3sr0tsyylhtf9gekewnj/dh9ml7bq9+m8sytwrsdqn/nb0yadrpnnbkbhr/3rsgdh4/2dx4fpnn67pml8dhlk6mkteickk70tywn5uzsuwww05tcuyxitq/j208tv95qbzisx22v06xamwqpi9g612r8ezxwa0qxzzisy4gtzmwdylueeyjup97um0rz03kkojl5f7oat8jpudu4ffenjqczy9xraiesrqpbpsucg7oiwtwua6wti5w2h6gwnmfkfmd04ategpplvf1pa986twjtpd2sfm69fkanhtgvif2kk3bt+qx1/o8tcpu+x9zm5owlktw/lbycwgxbtsgeauosr5zardnxkyrrrdgxrrk7rxara5at7c5pxl/cwvnj74gsarsooqspa9rwogvmmgemf3gcqtjih0opymgu9rdu55yelpuw8ma1vhjj4u0/n/vg2oezb7m+pppgwr+ee/c8dy88eng04xj1h28oro6nutinvpxmzrnuma/aa/agvamroauz8blcgjkg4dv4ax6cx8fj8c3aabkphe11oa/ajgx8dyy9qg8=</latexit> State space Collect all particle positions into a single vector x = 2 6 4 x 1 x 2. 3 7 5 x n Similarly, collect velocities v and net forces f Equations of motion: d dt 2 6 4 x 1 x 2. 3 7 5 = 2 6 4 v 1 v 2. 3 7 5, d dt 2 6 4 v 1 v 2. 3 7 5 = 2 3 f 1 /m 1 f 2 /m 2 6 7 4. 5 x n v n v n f n /m n
<latexit sha1_base64="tghg3xlyjxd3kcprmudpznoo5ew=">aaad4nicbzjpb9mwgmbdzomx/nvw5gjrgthvytqjlkivunbjlyzet0l1ftmok1ql7ch2sqmox4ab4srx4sbn4yktleemoery+pm9r+28eam8y9r4/q/b0ds4vhf/6mhxw0epnzwdnty71ljqhc6izks6jrcmgrn0yzjj6hwukozrrq+imw8nv9pqpzkun02z0xxhqwaji9hykxxjnifviypoykqvcwwu29y8djcv6yibm/i6vrcydx6e7vuta19xli3+n28ixv0koik+wzocjf2j3w7yf8fojmfuxiqnwywkjsk4fyzkwotl4odmvwflgmlofywktxnmbnbkl1ykzklevw1lavjkojfmplk3mlb13ywkc61lhtni5ri6yxrzf2xzmotdqmiilwwv5hajpmigkbapm4yzosrkprwykgbpcskak0ym/rl7uxaekzauzd6x2hrzuakcfigsc2wriok6qtqikg7juofjx2xrthrsqufa0c9vdlbd3k0dt11yordsl7xx8kabmzgw6clugwkxzhw468jzb5534dyb87ppx6dbfh1xetoj/enw6ww8ne4a8wi8ac/bgxcat2akpoilsaae/as/bwedqy/2vnrfvo+3ocpbluc52bvejz/k/kvm</latexit> <latexit sha1_base64="tghg3xlyjxd3kcprmudpznoo5ew=">aaad4nicbzjpb9mwgmbdzomx/nvw5gjrgthvytqjlkivunbjlyzet0l1ftmok1ql7ch2sqmox4ab4srx4sbn4yktleemoery+pm9r+28eam8y9r4/q/b0ds4vhf/6mhxw0epnzwdnty71ljqhc6izks6jrcmgrn0yzjj6hwukozrrq+imw8nv9pqpzkun02z0xxhqwaji9hykxxjnifviypoykqvcwwu29y8djcv6yibm/i6vrcydx6e7vuta19xli3+n28ixv0koik+wzocjf2j3w7yf8fojmfuxiqnwywkjsk4fyzkwotl4odmvwflgmlofywktxnmbnbkl1ykzklevw1lavjkojfmplk3mlb13ywkc61lhtni5ri6yxrzf2xzmotdqmiilwwv5hajpmigkbapm4yzosrkprwykgbpcskak0ym/rl7uxaekzauzd6x2hrzuakcfigsc2wriok6qtqikg7juofjx2xrthrsqufa0c9vdlbd3k0dt11yordsl7xx8kabmzgw6clugwkxzhw468jzb5534dyb87ppx6dbfh1xetoj/enw6ww8ne4a8wi8ac/bgxcat2akpoilsaae/as/bwedqy/2vnrfvo+3ocpbluc52bvejz/k/kvm</latexit> <latexit sha1_base64="tghg3xlyjxd3kcprmudpznoo5ew=">aaad4nicbzjpb9mwgmbdzomx/nvw5gjrgthvytqjlkivunbjlyzet0l1ftmok1ql7ch2sqmox4ab4srx4sbn4yktleemoery+pm9r+28eam8y9r4/q/b0ds4vhf/6mhxw0epnzwdnty71ljqhc6izks6jrcmgrn0yzjj6hwukozrrq+imw8nv9pqpzkun02z0xxhqwaji9hykxxjnifviypoykqvcwwu29y8djcv6yibm/i6vrcydx6e7vuta19xli3+n28ixv0koik+wzocjf2j3w7yf8fojmfuxiqnwywkjsk4fyzkwotl4odmvwflgmlofywktxnmbnbkl1ykzklevw1lavjkojfmplk3mlb13ywkc61lhtni5ri6yxrzf2xzmotdqmiilwwv5hajpmigkbapm4yzosrkprwykgbpcskak0ym/rl7uxaekzauzd6x2hrzuakcfigsc2wriok6qtqikg7juofjx2xrthrsqufa0c9vdlbd3k0dt11yordsl7xx8kabmzgw6clugwkxzhw468jzb5534dyb87ppx6dbfh1xetoj/enw6ww8ne4a8wi8ac/bgxcat2akpoilsaae/as/bwedqy/2vnrfvo+3ocpbluc52bvejz/k/kvm</latexit> <latexit sha1_base64="tghg3xlyjxd3kcprmudpznoo5ew=">aaad4nicbzjpb9mwgmbdzomx/nvw5gjrgthvytqjlkivunbjlyzet0l1ftmok1ql7ch2sqmox4ab4srx4sbn4yktleemoery+pm9r+28eam8y9r4/q/b0ds4vhf/6mhxw0epnzwdnty71ljqhc6izks6jrcmgrn0yzjj6hwukozrrq+imw8nv9pqpzkun02z0xxhqwaji9hykxxjnifviypoykqvcwwu29y8djcv6yibm/i6vrcydx6e7vuta19xli3+n28ixv0koik+wzocjf2j3w7yf8fojmfuxiqnwywkjsk4fyzkwotl4odmvwflgmlofywktxnmbnbkl1ykzklevw1lavjkojfmplk3mlb13ywkc61lhtni5ri6yxrzf2xzmotdqmiilwwv5hajpmigkbapm4yzosrkprwykgbpcskak0ym/rl7uxaekzauzd6x2hrzuakcfigsc2wriok6qtqikg7juofjx2xrthrsqufa0c9vdlbd3k0dt11yordsl7xx8kabmzgw6clugwkxzhw468jzb5534dyb87ppx6dbfh1xetoj/enw6ww8ne4a8wi8ac/bgxcat2akpoilsaae/as/bwedqy/2vnrfvo+3ocpbluc52bvejz/k/kvm</latexit> Particle dynamics, compactly Introduce the inertia matrix 2 m 1 I M = 6 4 m 2 I 3... 7 5 mni So dx/dt = v, dv/dt = M 1 f(x,v)
<latexit sha1_base64="igjpeaay3torre4mlsczzaogsji=">aaad5xicbzlfatswfmavefuz7l+6xe5glaxs6ii9butnibcbtrdoygklurzkwxzeldmvzm/g+bf2n3a719pezkxos6hypwa4/n76pkoj46cxu9p1f/f6zr37d/ygd/cfpx7y9nnw4pmfsjjj6jwkcskvfkxozasda6zjepvkirkf00v/+kpdl3mqfuvez12mdmlxjfjicnzgwg0lkuejrd6nmkh8jrvkry0kibbeoaii+c8eqxrzk+ha6fimazzg5eed1nxjnx2p3ng1cseooel54c5gq+hinbibgn3e2yyjsi3z1uf/gykezjwktwks1mjzu72ssnsmxlter5miksbxokilkwrmqvpwm+bu8lvrahgm0nxcw41qoyrmlsq5b1aaateqzrrxlrbidhi8rjhim00fut0ozgkoe9h0ggzmuqlj0isysgzqhwsnjsbavmfokyt7kkvrvxmt0y/zl6mgx0ncotydrefdvaiprhiy1b1m/me/hktbnhqwff2vtlbsewslfm1ywrdsbpxbog97qwugbrhzmgrduwuetugzbc/acgbbwd2mo9cevm5y8xbiurpv07vrdlodzaf4cv6bmfdaezafh8e5mamcfoe/vb3ewimcb85358ft0n5v63kbdsl5+rdjzln7</latexit> <latexit sha1_base64="igjpeaay3torre4mlsczzaogsji=">aaad5xicbzlfatswfmavefuz7l+6xe5glaxs6ii9butnibcbtrdoygklurzkwxzeldmvzm/g+bf2n3a719pezkxos6hypwa4/n76pkoj46cxu9p1f/f6zr37d/ygd/cfpx7y9nnw4pmfsjjj6jwkcskvfkxozasda6zjepvkirkf00v/+kpdl3mqfuvez12mdmlxjfjicnzgwg0lkuejrd6nmkh8jrvkry0kibbeoaii+c8eqxrzk+ha6fimazzg5eed1nxjnx2p3ng1cseooel54c5gq+hinbibgn3e2yyjsi3z1uf/gykezjwktwks1mjzu72ssnsmxlter5miksbxokilkwrmqvpwm+bu8lvrahgm0nxcw41qoyrmlsq5b1aaateqzrrxlrbidhi8rjhim00fut0ozgkoe9h0ggzmuqlj0isysgzqhwsnjsbavmfokyt7kkvrvxmt0y/zl6mgx0ncotydrefdvaiprhiy1b1m/me/hktbnhqwff2vtlbsewslfm1ywrdsbpxbog97qwugbrhzmgrduwuetugzbc/acgbbwd2mo9cevm5y8xbiurpv07vrdlodzaf4cv6bmfdaezafh8e5mamcfoe/vb3ewimcb85358ft0n5v63kbdsl5+rdjzln7</latexit> <latexit sha1_base64="igjpeaay3torre4mlsczzaogsji=">aaad5xicbzlfatswfmavefuz7l+6xe5glaxs6ii9butnibcbtrdoygklurzkwxzeldmvzm/g+bf2n3a719pezkxos6hypwa4/n76pkoj46cxu9p1f/f6zr37d/ygd/cfpx7y9nnw4pmfsjjj6jwkcskvfkxozasda6zjepvkirkf00v/+kpdl3mqfuvez12mdmlxjfjicnzgwg0lkuejrd6nmkh8jrvkry0kibbeoaii+c8eqxrzk+ha6fimazzg5eed1nxjnx2p3ng1cseooel54c5gq+hinbibgn3e2yyjsi3z1uf/gykezjwktwks1mjzu72ssnsmxlter5miksbxokilkwrmqvpwm+bu8lvrahgm0nxcw41qoyrmlsq5b1aaateqzrrxlrbidhi8rjhim00fut0ozgkoe9h0ggzmuqlj0isysgzqhwsnjsbavmfokyt7kkvrvxmt0y/zl6mgx0ncotydrefdvaiprhiy1b1m/me/hktbnhqwff2vtlbsewslfm1ywrdsbpxbog97qwugbrhzmgrduwuetugzbc/acgbbwd2mo9cevm5y8xbiurpv07vrdlodzaf4cv6bmfdaezafh8e5mamcfoe/vb3ewimcb85358ft0n5v63kbdsl5+rdjzln7</latexit> <latexit sha1_base64="igjpeaay3torre4mlsczzaogsji=">aaad5xicbzlfatswfmavefuz7l+6xe5glaxs6ii9butnibcbtrdoygklurzkwxzeldmvzm/g+bf2n3a719pezkxos6hypwa4/n76pkoj46cxu9p1f/f6zr37d/ygd/cfpx7y9nnw4pmfsjjj6jwkcskvfkxozasda6zjepvkirkf00v/+kpdl3mqfuvez12mdmlxjfjicnzgwg0lkuejrd6nmkh8jrvkry0kibbeoaii+c8eqxrzk+ha6fimazzg5eed1nxjnx2p3ng1cseooel54c5gq+hinbibgn3e2yyjsi3z1uf/gykezjwktwks1mjzu72ssnsmxlter5miksbxokilkwrmqvpwm+bu8lvrahgm0nxcw41qoyrmlsq5b1aaateqzrrxlrbidhi8rjhim00fut0ozgkoe9h0ggzmuqlj0isysgzqhwsnjsbavmfokyt7kkvrvxmt0y/zl6mgx0ncotydrefdvaiprhiy1b1m/me/hktbnhqwff2vtlbsewslfm1ywrdsbpxbog97qwugbrhzmgrduwuetugzbc/acgbbwd2mo9cevm5y8xbiurpv07vrdlodzaf4cv6bmfdaezafh8e5mamcfoe/vb3ewimcb85358ft0n5v63kbdsl5+rdjzln7</latexit> Forward Euler dy/dt = φ(y) y 1 = y 0 + Δt φ(y 0 ) Apply it to the equations of motion: y = apple x v, '(y) = apple v M 1 f(x, v) We get a simple update rule: x 1 = x 0 + Δt v 0 v 1 = v 0 + Δt M 1 f(x 0,v 0 )
Forward Euler Reinterpret in terms of particles: Implementation: x 1 = x 0 + Δt v 0 v 1 = v 0 + Δt M 1 f(x 0,v 0 ) x i 1 = x i 0 + Δt v i 0 v i 1 = v i 0 + Δt f i 0/m i Attach a force accumulator f i to each particle For each force term (e.g. spring): compute force, add to affected particles For each particle i: update x i and v i Details in Pixar notes
Mass-spring systems
Mass-spring systems Collection of particles connected by springs Natural model for a network of elastic rods / beams Also used as a phenomenological model for elastic deformable objects
Mass-spring cloth [Provot 95] Particles in a rectangular grid Different types of springs model different modes of elastic response Structural springs (modeling woven threads)
Mass-spring cloth [Provot 95] Particles in a rectangular grid Different types of springs model different modes of elastic response Structural springs Shear springs (to prevent quads from collapsing)
Mass-spring cloth [Provot 95] Particles in a rectangular grid Different types of springs model different modes of elastic response Structural springs Shear springs Flexion springs (to resist excessive bending)
Mass-spring cloth [Provot 95] Particles in a rectangular grid Different types of springs model different modes of elastic response Structural springs Shear springs Flexion springs
Mass-spring cloth [Provot 95] Most other forces discussed by Provot can be improved: Viscous damping Use spring damping instead: conserves linear, angular momentum Wind forces Better model: quadratic normal forces [Wejchert & Haumann 1991] Elongation constraints Now better known as strain limiting, will discuss later as part of constrained dynamics
Collision handling
Collisions Cloth shouldn t pass through itself or through other objects Collision handling is a big topic! Today, only a basic scheme for collisions with simple fixed shapes 1. Collision detection: check if any particle is inside shape Easy for simple shapes, e.g. sphere, plane, box 2. Collision resolution: do something to push it out Simplest approach: penalty forces. Create a virtual zero-length spring pulling the particle out
Penalty forces Find point p on surface closest to particle s current position x, create temporary spring with zero l 0, large k s p This models the normal force due to collision. Better: choose p at some thickness outside the actual surface x For friction, add tangential force due to Coulomb s law: f t μ f n, f t is parallel to v
Instability Increasing the spring constant makes makes forward Euler explode! Have to decrease Δt to recover stability If k d = 0, there is no stable time step [Dinev et al. 2018] Other methods e.g. backward Euler have much better stability, even if same order of accuracy!