程序求解--牛顿切线法

这两天在看贝塞尔曲线,数学不好,有个地方没看懂。问题放二楼吧

(怎么论坛换了新版之后,感觉页面变得乱七八糟一样的呢?难道只有我一个人的是这样吗?)

算了,直接贴吧,回复那片区域根本没法编辑……

说正事,就是下面的这段代码,应该是用了牛顿切线法,哪位可以帮忙解释一下,牛顿切线法的作用到底是什么?我查了两天,无奈数学不好,没理解……:10:

void BezierBy::update(float time)
{
if (_target)
{
float xa = 0;
float xb = _config.controlPoint_1.x;
float xc = _config.controlPoint_2.x;
float xd = _config.endPosition.x;

    float ya = 0;
    float yb = _config.controlPoint_1.y;
    float yc = _config.controlPoint_2.y;
    float yd = _config.endPosition.y;

    float x = bezierat(xa, xb, xc, xd, time);
    float y = bezierat(ya, yb, yc, yd, time);

#if CC_ENABLE_STACKABLE_ACTIONS
Vec2 currentPos = _target->getPosition();
Vec2 diff = currentPos - _previousPosition;
_startPosition = _startPosition + diff;

    Vec2 newPos = _startPosition + Vec2(x,y);
    _target->setPosition(newPos);

    _previousPosition = newPos;

#else
_target->setPosition( _startPosition + Vec2(x,y));
#endif // !CC_ENABLE_STACKABLE_ACTIONS
}
}

//这个内联函数算的到底是什么东西?
static inline float bezierat( float a, float b, float c, float d, float t )
{
return (powf(1-t,3) * a +
3t(powf(1-t,2))b +
3
powf(t,2)*(1-t)*c +
powf(t,3)*d );
}

还有就是下面这个 float time,应该改是次数的意思吧?还是持续时间?有点蒙圈。

void BezierBy::update(float time)

论坛换了新版是神马意思。。。没换啊

现在不是cocos 和cocos china绑定了吗?

我用win7进来的,就是一个新的蓝色的界面,用mac进的话就和以前一样。同一个网址,你们不是?

登录的时候就是下面这个样子了,windows下,mac下还是和原来一样。:9:

贝塞尔2阶算法的公式 你去网上搜下贝塞尔算法的详解就明白了

我奏事不知道这个公式在实际中怎么应用,以及为什么要用它……

就是贝塞尔曲线就是靠这种方式画出来的, 贝塞尔的实现原理呗…
http://bbs.csdn.net/topics/390358020