objective-c – Cocos2D Bezier曲线围绕物体,如同重力一样

我试图操纵一个对象.当它接近另一个对象时,让我们说一个地球仪,我想让地球仪在原始对象上引力引力.我知道我应该使用CCBezierTo,所以这不是一个编程问题,因为它是一个数学问题.

在数学上,我如何找出贝塞尔曲线(1,2和结束)的三个点,并根据其距离给出一个重量(更远的=较小的拉力).我已经将距离映射到一个变量中.

想想一下在月球上弹弓的宇宙飞船.

码:

ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(projectile.position.x + 10,projectile.position.y + 20);
bezier.controlPoint_2 = ccp(projectile.position.x + 20,projectile.position.y + 40);
bezier.endPosition = ccp(projectile.position.x + 30,projectile.position.y+60);
id bezierAction = [CCBezierTo actionWithDuration:1 bezier:bezier];
[projectile stopAllActions];
[projectile runAction: bezierAction];

解决方法

轨迹将是圆锥截面(线,双曲线,抛物线,椭圆或圆).

您可以将其表示为理性贝塞尔曲线.
http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/NURBS/RB-conics.html

http://www.cs.unc.edu/~dm/UNC/COMP236/papers/farin.pdf.

如果你坚持使用二次贝塞尔曲线,我将使用这样的函数
http://www.netlib.org/minpack/lmder.f找到控制点的最佳位置
通过最小二乘法最小化.

我认为,如果您只是计算圆锥截面并将其绘制为线循环将是最简单的方法.

或者您实现一个verlet积分器,并解决运动方程式.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...