{"id":1119,"date":"2018-01-16T23:28:34","date_gmt":"2018-01-16T14:28:34","guid":{"rendered":"http:\/\/naochang.me\/?p=1119"},"modified":"2018-01-16T23:28:34","modified_gmt":"2018-01-16T14:28:34","slug":"catmull-rom%e3%82%b9%e3%83%97%e3%83%a9%e3%82%a4%e3%83%b3%e6%9b%b2%e7%b7%9a","status":"publish","type":"post","link":"https:\/\/stacstar.jp\/blog\/?p=1119","title":{"rendered":"Catmull-Rom\u30b9\u30d7\u30e9\u30a4\u30f3\u66f2\u7dda"},"content":{"rendered":"<p><script async src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/mathjax\/2.7.0\/MathJax.js?config=TeX-AMS_CHTML\"><\/script><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/curve_catmullrom.gif\" alt=\"\" width=\"600\" height=\"275\" class=\"border_light aligncenter size-full wp-image-1095\" \/><br \/>\n<a href=\"https:\/\/github.com\/naochang\/Curve\" rel=\"noopener\" target=\"_blank\">github | naochang | Curve<\/a><\/p>\n<p>Catmull-Rom\u30b9\u30d7\u30e9\u30a4\u30f3\u66f2\u7dda\u306f\u5236\u5fa1\u70b9\u3092\u5fc5\u8981\u3068\u305b\u305a\u3001\u5168\u3066\u306e\u70b9\u3092\u901a\u308b\u66f2\u7dda\u3002<a href=\"\/blog\/?p=975\" rel=\"noopener\" target=\"_blank\">\u30a8\u30eb\u30df\u30fc\u30c8\u66f2\u7dda<\/a>\u3067\u306e\u5404\u70b9\u306e\u30d9\u30af\u30c8\u30eb\u306b\u5bfe\u3057\u3066\u4e0b\u8a18\u306e\u3088\u3046\u306b\u524d\u5f8c\u306e\u70b9\u306e\u4f4d\u7f6e\u304b\u3089\u30d9\u30af\u30c8\u30eb\u3092\u81ea\u52d5\u7684\u306b\u4f5c\u3063\u305f\u3082\u306e\u5165\u308c\u308b\u3068\u305d\u306e\u70b9\u3092\u901a\u308b\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<p><!--more--><\/p>\n<p>\\begin{align}<br \/>\nv_i = \\frac{P_{i+1} &#8211; P_{i-1}}{2}\\\\<br \/>\nv_{i+1} = \\frac{P_{i+2} &#8211; P_i}{2}<br \/>\n\\end{align}<\/p>\n<p>\u30a8\u30eb\u30df\u30fc\u30c8\u66f2\u7dda\u306e\u5f0f\u306f<\/p>\n<p>\\begin{align}<br \/>\nf(t) = (2P(0) &#8211; 2P(1) + v_0 + v_1)t^3 + (-3P(0) + 3P(1) &#8211; 2v_0  &#8211; v_1)t^2 + v_0t + P(0)<br \/>\n\\end{align}<\/p>\n<p>\u3053\u3053\u3067\\(P(0)\\)\u3092\\(P_i\\)\u3001\\(P(1)\\)\u3092\\(P_{i+1}\\)\u3068\u3057\u3001\\(v_0, v_1\\)\u306b\u4e0a\u8a18\u306e\\(v_i, v_{i+1}\\)\u3092\u4ee3\u5165\u3059\u308b\u3068<\/p>\n<p>\\begin{align}<br \/>\nf(t) &#038;=(2P_i-2P_{i+1}+v_i+v_{i+1})t^3+(-3P_i+3P_{i+1}-2v_i-v_{i+1})t^2+v_it+P(0)\\\\<br \/>\n&#038;= (2P_i-2P_{i+1} + \\frac{P_{i+1}-P_{i-1}}{2} + \\frac{P_{i+2} &#8211; P_i}{2})t^3\\\\<br \/>\n&#038;+ (-3P_i+3P_{i+1}-2(\\frac{P_{i+1}-P_{i-1}}{2})-\\frac{P_{i+2} &#8211; P_i}{2}))t^2\\\\<br \/>\n&#038;+ (\\frac{P_{i+1} &#8211; P_{i-1}}{2})t+P_i\\\\<br \/>\n&#038;= \\frac{1}{2}(4P_i-4P_{i+1}+P_{i+1}-P_{i-1}+P_{i+2}-P_i)t^3\\\\<br \/>\n&#038;+ \\frac{1}{2}(-6P_i+6P_{i+1}-2P_{i+1}+2P_{i-1}-P_{i+2}+P_i)t^2\\\\<br \/>\n&#038;+ \\frac{1}{2}(P_{i+1}-P_{i-1})t + P_i\\\\<br \/>\n&#038;= \\frac{1}{2}(-P_{i-1}+3P_i-3P_{i+1}+P_{i+2})t^3\\\\<br \/>\n&#038;+ \\frac{1}{2}(2P_{i-1}-5P_i+4P_{i+1}-P_{i+2})t^2\\\\<br \/>\n&#038;+ \\frac{1}{2}(-P_{i-1}+P_{i+1})t + P_i<br \/>\n\\end{align}<\/p>\n<p>\u3053\u308c\u3067\u66f2\u7dda\u306e\u5f0f\u306f\u5b8c\u6210\u3060\u304c\u3001\u59cb\u70b9\u306f1\u3064\u524d\u306e\u30dd\u30a4\u30f3\u30c8\u304c\u306a\u3044\u306e\u3067\u3001\u59cb\u70b9\u306e\u52a0\u901f\u306f\u6700\u521d\u3068\u6700\u5f8c\u306e\u4e2d\u9593\u306e\u901f\u5ea6\u3067\u79fb\u52d5\u3057\u305f\u3068\u4eee\u5b9a\u3059\u308b\u305d\u3046\u3067\u3059\u3002<br \/>\n\\(v_0 = 2(P_1 &#8211; P_0) &#8211; \\frac{P_2-P_0}{2}\\)<\/p>\n<p>\u3053\u308c\u3092\u540c\u3058\u30a8\u30eb\u30df\u30fc\u30c8\u66f2\u7dda\u306e\u5f0f\u306b\u5165\u308c\u308b\u3068<\/p>\n<p>\\begin{align}<br \/>\nf_0(t) &#038;= (2P_i-2P_{i+1}+(2(P_{i+1}-P_i)-\\frac{P_{i+2}-P_i}{2})+\\frac{P_{i+2}-P_i}{2})t^3\\\\<br \/>\n&#038;+ (-3P_i+3P_{i+1}-2(2(P_{i+1}-P_i)-\\frac{P_{i+2}-P_i}{2})-\\frac{P_{i+2}-P_i}{2})t^2\\\\<br \/>\n&#038;+ (2(P_{i+1}-P_i)-\\frac{P_{i+2}-P_i}{2})t + P_i\\\\<br \/>\n&#038;= \\frac{1}{2}(4P_i-4P_{i+1}+4P_{i+1}-4P_i-2P_{i+2}+2P_i+P_{i+2}-P_i)t^3\\\\<br \/>\n&#038;+ \\frac{1}{2}(-6P_i+6P_{i+1}-8P_{i+1}+8P_i+2P_{i+2}-2P_i-P_{i+2}+P_i)t^2\\\\<br \/>\n&#038;+ \\frac{1}{2}(4P_{i+1}-4P_i-P_{i+2}+P_i)t+P_i\\\\<br \/>\n&#038;= \\frac{1}{2}((P_i-2P_{i+1}+P_{i+2})t^2 + (-3P_i+4P_{i+1}-P_{i+2})t + 2P_i)<br \/>\n\\end{align}<\/p>\n<p>\u540c\u69d8\u306b\u7d42\u70b9\u3082\u6b21\u70b9\u304c\u306a\u3044\u306e\u3067\u3001<a href=\"http:\/\/t-pot.com\/program\/2_3rdcurve\/calc2.html#Edge\" rel=\"noopener\" target=\"_blank\">\u3053\u3061\u3089\u306b\u3057\u305f\u304c\u3063\u3066<\/a>\u8a08\u7b97\u3059\u308b\u3068<br \/>\n\\begin{align}<br \/>\nf_n(t) = \\frac{1}{2}((P_{n-1} -2P_n + P_{n+1})t^2+(-P_{n-1}+P_{n+1})t+2P_n))<br \/>\n\\end{align}<\/p>\n<p>\u53c2\u8003\uff09<br \/>\n<a href=\"http:\/\/t-pot.com\/program\/2_3rdcurve\/index.html\" rel=\"noopener\" target=\"_blank\">t-pot | 3\u6b21\u66f2\u7dda<\/a><br \/>\n<a href=\"https:\/\/spphire9.wordpress.com\/2011\/06\/10\/catmull-rom%E3%82%B9%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E6%9B%B2%E7%B7%9A\/\" rel=\"noopener\" target=\"_blank\">\u751f\u5b58\u65e5\u8a18<\/a><br \/>\n<a href=\"\" rel=\"noopener\" target=\"_blank\"><\/a><br \/>\n<a href=\"\" rel=\"noopener\" target=\"_blank\"><\/a><\/p>\n<p><script src=\"http:\/\/gist-it.appspot.com\/github\/naochang\/Curve\/blob\/master\/Assets\/Scripts\/Curve\/CatmullRomSplineCurve.cs\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>github | naochang | Curve Catmull-Rom\u30b9\u30d7\u30e9\u30a4\u30f3\u66f2\u7dda\u306f\u5236\u5fa1\u70b9\u3092\u5fc5\u8981\u3068\u305b\u305a\u3001\u5168\u3066\u306e\u70b9\u3092\u901a\u308b\u66f2\u7dda\u3002\u30a8\u30eb\u30df\u30fc\u30c8\u66f2\u7dda\u3067\u306e\u5404\u70b9\u306e\u30d9\u30af\u30c8\u30eb\u306b\u5bfe\u3057\u3066\u4e0b\u8a18\u306e\u3088\u3046\u306b\u524d\u5f8c\u306e\u70b9\u306e\u4f4d\u7f6e\u304b\u3089\u30d9\u30af\u30c8\u30eb\u3092\u81ea\u52d5\u7684\u306b\u4f5c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,17,16,2],"tags":[],"class_list":["post-1119","post","type-post","status-publish","format-standard","hentry","category-c","category-curve","category-math","category-unity"],"_links":{"self":[{"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1119"}],"version-history":[{"count":109,"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1119\/revisions"}],"predecessor-version":[{"id":1514,"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1119\/revisions\/1514"}],"wp:attachment":[{"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stacstar.jp\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}