CardinalSpline and Catmull-Rom
CCCardinalSplineBy´Â ½ºÇöóÀÎ °î¼®À» ±×¸°´Ù. CCCardinalSplineByÀÇ Ã¹ ¹ø° ÀÎÀÚ´Â Áö¼Ó½Ã°£ 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 ½ºÇöóÀÎ °î¼±Àº ÄÁÆ®·Ñ Æ÷ÀÎÅ͸¦ Áö³ª´Â °î¼±ÀÌ´Ù.
CCCatmullRomBy* CCCatmullRomBy::create(float dt, cocos2d::CCPointArray *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);
|