这个需求来自于工作中的一个需求

两个城池之间的路径是美术事先画好的,武将需要沿着画好的曲线行进

经过查找资料,发现了这篇文章

用到了下面这个公式:
阶贝塞尔曲线可如下推断。给定点P0、P1、…、Pn,其贝塞尔曲线即
贝塞尔曲线公式高阶曲线为建构高阶曲线,便需要相应更多的中介点。对于三次曲线,可由线性贝塞尔曲线描述的中介点Q0、Q1、Q2,和由二次曲线描述的点R0、R1所建构:
三次贝塞尔曲线

对于四次曲线,可由线性贝塞尔曲线描述的中介点Q0、Q1、Q2、Q3,由二次贝塞尔曲线描述的点R0、R1、R2,和由三次贝塞尔曲线描述的点S0、S1所建构:
四次贝塞尔曲线

更复杂的:
五次贝塞尔曲线

参考资料

以下为lua的实现方式,参考了上文中的c++算法,并没有考虑在极为高阶的情况下的性能问题

代码基于quick-cocos2d-x 2.2.5编写(谁叫他快呢)

 

 

最后放一张效果图


Leave a reply

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> 

required