{"id":647,"date":"2017-12-21T22:41:44","date_gmt":"2017-12-21T14:41:44","guid":{"rendered":"http:\/\/www.whudj.cn\/?p=647"},"modified":"2022-01-18T14:30:22","modified_gmt":"2022-01-18T06:30:22","slug":"%e6%a0%b9%e6%8d%ae%e4%b8%89%e7%82%b9%e4%bc%b0%e7%ae%97%e5%af%bc%e6%95%b0-bessel-tangent%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"http:\/\/www.whudj.cn\/?p=647","title":{"rendered":"\u6839\u636e\u4e09\u70b9\u4f30\u7b97\u5bfc\u6570\/Bessel Tangent\u65b9\u6cd5"},"content":{"rendered":"<p>\u5728\u66f2\u7ebf\u62df\u5408\u95ee\u9898\u4e2d\uff0c\u901a\u5e38\u9700\u8981\u6839\u636e\u5df2\u77e5\u66f2\u7ebf\u4e0a\u7684\u79bb\u6563\u70b9\uff0c\u4f30\u7b97\u51fa\u66f2\u7ebf\u5728\u7aef\u70b9\u5904\u7684\u5bfc\u6570\uff08\u4e25\u683c\u6765\u8bf4\u662f\u5bfc\u77e2\uff09\uff0c\u5e38\u7528\u7684\u4e00\u79cd\u5bfc\u6570\u4f30\u8ba1\u65b9\u6cd5\u79f0\u4e3a\u201cBessel Tangent\u201d\u65b9\u6cd5\u3002<!--more--><\/p>\n<p>\u5df2\u77e5\u70b9\\(P_{i-1},P_i,P_{i+1}\\)\uff0c\u6c42\u4e00\u79cd\u5bfc\u6570\uff08\u77e2\uff09\u4f30\u7b97\u7b97\u6cd5\uff0c\u8ba1\u7b97\\(P_{i-1}^\\prime,P_i^\\prime,P_{i+1}^\\prime\\)\u3002Bessel tangent \u7b97\u6cd5\u7684\u4e3b\u8981\u601d\u8def\u662f\uff0c\u63d2\u503c\u4e00\u6761\u901a\u8fc7\u4e09\u70b9\u7684\u4e8c\u6b21\u66f2\u7ebf\uff0c\u7136\u540e\u901a\u8fc7\u8ba1\u7b97\u66f2\u7ebf\u4e0a\u4e09\u70b9\u7684\u5bfc\u6570\u7684\u65b9\u5f0f\u7ed9\u51fa\u4e09\u70b9\u7684\u4f30\u8ba1\u5bfc\u6570\u3002<\/p>\n<p>\u4ee4 \\(P_{i-1},P_{i},P_{i+1}\\) \u7684\u53c2\u6570\u5206\u522b\u4e3a \\(t_{i-1},t_{i},t_{i+1}\\)<\/p>\n<p>\u63d2\u503c\u7684\u66f2\u7ebf\u7684\u8868\u8fbe\u5f0f\u5982\u4e0b\uff1a<\/p>\n<p>$$P(t)=\\frac{(t-t_i)(t-t_{i+1})}{(t_{i-1}-t_i)(t_{i-1}-t_{i+1})}(P_{i-1}-P_{i})+\\frac{(t-t_{i-1})(t-t_{i})}{(t_{i+1}-t_{i-1})(t_{i+1}-t_{i})}(P_{i+1}-P_{i})+P_{i}\\tag1$$<\/p>\n<p><strong>1) \\(P_i\\)\u5bfc\u6570<\/strong><\/p>\n<p>$$P(t_i)^\\prime=\\frac{t_i-t_{i+1}}{(t_{i-1}-t_i)(t_{i-1}-t_{i+1})}(P_{i-1}-P_{i})+\\frac{t_i-t_{i-1}}{(t_{i+1}-t_{i-1})(t_{i+1}-t_{i})}(P_{i+1}-P_{i})$$<\/p>\n<p>\u4ee4 \\(\\triangle t_i = t_{i+1}-t_i;\\triangle P_i=\\frac{P_{i+1}-P_i}{\\triangle t_i}\\)<\/p>\n<p>$$\\begin{align}<br \/>\nP(t_i)^\\prime&amp;=\\frac{t_i-t_{i+1}}{t_{i-1}-t_{i+1}}\\triangle P_{i-1}+\\frac{t_i-t_{i-1}}{t_{i+1}-t_{i-1}}\\triangle P_{i}\\\\<br \/>\n&amp;=\u00a0\\frac{t_i-t_{i+1}}{t_{i-1}-t_{i+1}}\\triangle P_{i-1}+\\frac{t_i-t_{i-1}}{t_{i+1}-t_{i-1}}\\triangle P_{i} \\\\<br \/>\n&amp;= \\frac{\\triangle t_{i}}{t_{i+1}-t_{i}+t_{i}-t_{i-1}}\\triangle P_{i-1} + \\frac{\\triangle t_{i-1}}{t_{i+1}-t_{i}+t_{i}-t_{i-1}}\\triangle P_{i}\\\\<br \/>\n&amp;=\\frac{\\triangle t_{i}}{\\triangle t_{i}+\\triangle t_{i-1}}\\triangle P_{i-1}+\\frac{\\triangle t_{i-1}}{\\triangle t_{i}+\\triangle t_{i-1}}\\triangle P_{i} \\tag2<br \/>\n\\end{align}$$\u5373\\(P_i^\\prime\\)\u662f\\(\\triangle P_{i-1}\\)\uff0c\\(\\triangle P_{i}\\)\u7684\u52a0\u6743\u5e73\u5747\u3002<\/p>\n<p><strong>2)\\(P_{i-1},P_{i+1}\\)\u5bfc\u6570<\/strong><\/p>\n<p>\u6839\u636e\u516c\u5f0f(1)<\/p>\n<p>$$\\begin{align}<br \/>\nP(t_{i-1})^\\prime&amp;=\\frac{2t_{i-1}-2t_{i+1}+t_{i+1}-t_{i}}{t_{i-1}-t_{i+1}}\\triangle P_{i-1}+\\frac{t_{i-1}-t_{i}}{t_{i+1}-t_{i-1}}\\triangle P_{i}\\\\<br \/>\n&amp;=2\\triangle P_{i-1}-(\\frac{\\triangle t_{i}}{\\triangle t_{i}+\\triangle t_{i-1}}\\triangle P_{i-1}+\\frac{\\triangle t_{i-1}}{\\triangle t_{i}+\\triangle t_{i-1}}\\triangle P_{i})\\\\<br \/>\n&amp;=2\\triangle P_{i-1}-P(t_i)^\\prime \\tag3<br \/>\n\\end{align}$$<\/p>\n<p>$$\\begin{align}<br \/>\nP(t_{i+1})^\\prime&amp;=-(\\frac{\\triangle t_{i}}{\\triangle t_{i}+\\triangle t_{i-1}}\\triangle P_{i-1}+\\frac{\\triangle t_{i-1}}{\\triangle t_{i}+\\triangle t_{i-1}}\\triangle P_{i} )+2\\triangle P_i \\\\<br \/>\n&amp;=2\\triangle P_i-P(t_{i})^\\prime \\tag4<br \/>\n\\end{align}$$<\/p>\n<p><strong>\u53c2\u6570\u5316\u7684\u9009\u62e9<\/strong><\/p>\n<p>\u5bf9\u4e8e\u4e09\u70b9\u7684\u53c2\u6570\u53ef\u4ee5\u6309\u7167\u7d2f\u8ba1\u5f26\u957f\u5316\u786e\u5b9a\u53c2\u6570$$ \\left\\{<br \/>\n\\begin{aligned}<br \/>\nt_{i-1} &amp; = 0 \\\\<br \/>\nt_{i} &amp; = t_0+|P_{i-1}P_i| \\\\<br \/>\nt_{i+1} &amp; = t_1+|P_iP_{i+1}|<br \/>\n\\end{aligned}<br \/>\n\\right.<br \/>\n$$<\/p>\n<p>\u6211\u5bf9\u7b97\u6cd5\u7684C++\u5b9e\u73b0\u662f\uff1a<\/p>\n<pre class=\"lang:c++ decode:true\"> \/*!\r\n  *\\brief Bessel Tangent \u65b9\u6cd5\u4f30\u7b97\u5bfc\u6570\r\n *\\ param const Point &amp; p0,p1,p2 \u5f85\u6c42\u70b9\r\n *\\ param Vec3d &amp; p0deriv,p1deriv,p2deriv \u4e09\u70b9\u4e0a\u5bfc\u6570\u7684\u4f30\u8ba1\u503c\r\n *\\ Returns:   \r\n *\/\r\nvoid BesselTanget(const Point&amp; p0,const Point&amp; p1,const Point&amp; p2, \r\n\t\t\t\t  Vec3d&amp; p0deriv,Vec3d&amp; p1deriv,Vec3d&amp; p2deriv)\r\n{\r\n\tdouble delta_t1 =PointDistance(p2,p1);\r\n\tdouble delta_t0 = PointDistance(p1,p0);\r\n\tVec3d delta_p0 = (p1-p0)\/delta_t0;\r\n\tVec3d delta_p1 = (p2-p1)\/delta_t1;\r\n\tdouble sum = delta_t0+delta_t1;\r\n\tp1deriv = delta_t1\/sum * delta_p0 + delta_t0\/sum * delta_p1;\r\n\tp0deriv = 2*delta_p0 - p1deriv;\r\n\tp2deriv = 2*delta_p1 - p1deriv;\r\n}<\/pre>\n<p>\u53c2\u8003\u8d44\u6599\uff1a<\/p>\n<p><a href=\"http:\/\/www.farinhansford.com\/books\/essentials-cagd\/\">The Essentials of CAGD : Chapter 11 Working with B Spline Curves\u00a0<\/a><\/p>\n<p>\u4e8e\u8c26. \u57fa\u4e8e\u5207\u5411\u7ea6\u675f\u7684\u4e8c\u6b21B\u6837\u6761\u63d2\u503c\u66f2\u7ebf\u7684\u7814\u7a76[D]. \u5c71\u4e1c\u5927\u5b66, 2009.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u66f2\u7ebf\u62df\u5408\u95ee\u9898\u4e2d\uff0c\u901a\u5e38\u9700\u8981\u6839\u636e\u5df2\u77e5\u66f2\u7ebf\u4e0a\u7684\u79bb\u6563\u70b9\uff0c\u4f30\u7b97\u51fa\u66f2\u7ebf\u5728\u7aef\u70b9\u5904\u7684\u5bfc\u6570\uff08\u4e25\u683c &hellip; <a href=\"http:\/\/www.whudj.cn\/?p=647\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[28],"_links":{"self":[{"href":"http:\/\/www.whudj.cn\/index.php?rest_route=\/wp\/v2\/posts\/647"}],"collection":[{"href":"http:\/\/www.whudj.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.whudj.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.whudj.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.whudj.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=647"}],"version-history":[{"count":21,"href":"http:\/\/www.whudj.cn\/index.php?rest_route=\/wp\/v2\/posts\/647\/revisions"}],"predecessor-version":[{"id":1332,"href":"http:\/\/www.whudj.cn\/index.php?rest_route=\/wp\/v2\/posts\/647\/revisions\/1332"}],"wp:attachment":[{"href":"http:\/\/www.whudj.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.whudj.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=647"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.whudj.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}