CardinalSpline and Catmull-Rom

CCCardinalSplineBy´Â ½ºÇöóÀÎ °î¼®À» ±×¸°´Ù.  

CCCardinalSplineByÀÇ Ã¹ ¹ø° ÀÎÀÚ´Â Áö¼Ó½Ã°£
CCCardinalSplineByÀÇ µÎ ¹ø° ÀÎÀÚ´Â ÄÁÆ®·Ñ Æ÷ÀÎÆ® ¹è¿­ÀÌ´Ù.
CCCardinalSplineByÀÇ 3¹ø° ÀÎÀÚ tentionÀ» 1.0À¸·Î ÇßÀ» ¶§ ½ÇÇà È­¸éÀÌ´Ù.

CCCardinalSplineByÀÇ 3¹ø° ÀÎÀÚ tentionÀ» 2.0À¸·Î ÇßÀ» ¶§ ½ÇÇà È­¸éÀÌ´Ù.

CCCardinalSplineByÀÇ Ã¹ ¹ø° ¹è¿­ÀÇ À§Ä¡´Â 0, 0À¸·Î ÁÖ¾î¾ß ¸¶Áö¸·À¸·Î ÁöÁ¤ÇÑ À§Ä¡ºÎÅÍ Á¦¾î¸¦ ÇÒ ¼ö ÀÖ´Ù.

CCCardinalSplineBy
//½ºÇÁ¶óÀÌÆ® »ý¼º
CCSprite* pWoman = CCSprite::create("Images/grossinis_sister1.png");
pWoman->setPosition( ccp(30, 200));
this->addChild( pWoman);
mWoman = pWoman;

//CCCardinalSplineBy ¾×¼Ç ½ÇÇà
CCPointArray *pArr = CCPointArray::create(4);
pArr->addControlPoint (ccp (0, 0));
pArr->addControlPoint (ccp (150, 100));
pArr->addControlPoint (ccp (250, -100));
pArr->addControlPoint (ccp (350,0));
CCCardinalSplineBy *action = CCCardinalSplineBy::create (5.0f, pArr, 1.0f);
mWoman->runAction(action);

//·¹À̾î draw½Ã µð¹ö±ë °è¼Ó È£Ãâ, ¸ÅÇÁ·¹ÀÓ È£Ã⠵ȴÙ.
glPointSize(5);
m_debugDraw->appendPoint( mWoman->getPosition(), 1, 0, 0);
m_debugDraw->appendPoint( ccp(30, 200), 0, 0, 0);
m_debugDraw->appendPoint( ccp(30 + 150, 200 + 100), 0, 0, 0);
m_debugDraw->appendPoint( ccp(30 + 250, 200 - 100), 0, 0, 0);
m_debugDraw->appendPoint( ccp(30 + 350, 200), 0, 0, 0);

 

Catmull-Rom ½ºÇöóÀÎ °î¼±Àº ÄÁÆ®·Ñ Æ÷ÀÎÅ͸¦ Áö³ª´Â °î¼±ÀÌ´Ù.

¼ø°£ À̵¿ÇÑ°Íó·³ º¸ÀÌÁö ¾ÊÀ»·Á¸é ù ¹ø° ¹è¿­À» (0, 0)À¸·Î ÁöÁ¤ÇÑ´Ù.
CCCatmullRomTo·Î ¿ùµå À§Ä¡°ªÀ» ¹Ù·Î ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù.

 

CCCatmullRomBy* CCCatmullRomBy::create(float dt, cocos2d::CCPointArray *points)
dt : Áö¼Ó ½Ã°£
points : ÄÁÆ®·Ñ Æ÷ÀÎÆ® ¹è¿­ ÁÖ¼Ò

 

CCCatmullRomBy
//½ºÇÁ¶óÀÌÆ® »ý¼º
CCSprite* pWoman = CCSprite::create("Images/grossinis_sister1.png");
pWoman->setPosition( ccp(30, 200));
this->addChild( pWoman);
mWoman = pWoman;

//CCCatmullRomBy ¾×¼Ç ½ÇÇà
CCPointArray *pArr = CCPointArray::create(4);
pArr->addControlPoint (CCPointZero);
pArr->addControlPoint (ccp (150, 100));
pArr->addControlPoint (ccp (250, -100));
pArr->addControlPoint (ccp (350,0));
CCCatmullRomBy *action = CCCatmullRomBy::create( 5, pArr);
mWoman->runAction(action);

//·¹À̾î draw½Ã µð¹ö±ë °è¼Ó È£Ãâ, ¸ÅÇÁ·¹ÀÓ È£Ã⠵ȴÙ.
glPointSize(5);
m_debugDraw->appendPoint( mWoman->getPosition(), 1, 0, 0);
m_debugDraw->appendPoint( ccp(30, 200), 0, 0, 0);
m_debugDraw->appendPoint( ccp(30 + 150, 200 + 100), 0, 0, 0);
m_debugDraw->appendPoint( ccp(30 + 250, 200 - 100), 0, 0, 0);
m_debugDraw->appendPoint( ccp(30 + 350, 200), 0, 0, 0);