我想在以下几点来安排我的精灵点迭代公式:发现使用for循环排成三角形
ccp(240.0, 160.0);
ccp(300.0, 120.0);
ccp(300.0, 200.0);
ccp(360.0, 80.0);
ccp(360.0, 160.0);
ccp(360.0, 240.0);
我试图获得使用for循环这些点的迭代公式。我已经有一段时间了。以下是点的视觉表示。请帮忙。
*
*
* *
*
*
我想在以下几点来安排我的精灵点迭代公式:发现使用for循环排成三角形
ccp(240.0, 160.0);
ccp(300.0, 120.0);
ccp(300.0, 200.0);
ccp(360.0, 80.0);
ccp(360.0, 160.0);
ccp(360.0, 240.0);
我试图获得使用for循环这些点的迭代公式。我已经有一段时间了。以下是点的视觉表示。请帮忙。
*
*
* *
*
*
你想要这样的东西吗? (其快速,草图只)
假设初始参数:
initPoint (x0, y0)
initVector (vX,vY)
num of iteration c
index = c
while index
for(j = index, currentPoint = initPoint+(c-index)*(0,2*vY); j;j--, currentPoint += initVector)
draw currentPoint
index--
基本上主要的想法是,你从右上方点开始,并移动与初始向量作为图中的上下文很多时候,随着迭代的进行(到左下角)并绘制点。然后将初始点沿y轴向下移动并重复减一次。
这里有一种方法:
我没有花,但一两分钟思考它,但它可以更容易,如果你从最大排开始,然后一路下跌:
PatternTest .H
#import "cocos2d.h"
@interface PatternTest : CCLayer
@end
PatternTest.m
@implementation PatternTest
-(id) init
{
if((self=[super init]))
{
CCNode *grid = [self generateArrowPatternWithBaseRowOfNumSprites:5 spacedApart:ccp(25.0f, 25.0f)];
[grid setPosition:ccp(50.0f,50.0f)];
[self addChild:grid];
}
return self;
}
-(CCNode *) generateArrowPatternWithBaseRowOfNumSprites:(float) numSprites spacedApart:(CGPoint) space
{
CCNode* patternNode = [CCNode node];
CGPoint tempPos = ccp(0.0f, 0.0f);
float offset = 0.0f;
while (numSprites > 0)
{
for(int x=numSprites;x>0;x--)
{
CCSprite *patternSprite = [CCSprite spriteWithFile:@"Icon.png"];
[patternSprite setScale: 0.3f];
[patternSprite setPosition: tempPos];
[patternNode addChild:patternSprite];
tempPos = ccpAdd(tempPos, ccp(0.0f,space.y));
}
tempPos = ccp(tempPos.x, 0.0f);
offset = offset + (space.y/2.0f);
tempPos = ccpAdd(tempPos, ccp(space.x, offset));
numSprites -= 1;
}
return patternNode;
}
@end
你想用for循环生成点吗?如果是这样,这是一个坏主意,不值得花时间。如果您只需遍历点数组,则需要将点存储在数组中。 – zakhej 2013-04-25 13:38:50