0
我試圖用斐波那契式的單詞繪製箭頭曲線。我可能會使用方法調用,而不是稍後將其構建到字符串上,但現在我想保留該字符串。用單詞繪製箭頭曲線(Objective-c cocos2D)
// create string. Initially set to "A"
NSMutableString *s1 = [[NSMutableString alloc] init];
[s1 setString:@"A"];
// loop through and replace A and B with the following strings. Toned down iterations to 5 here
for(int i=0; i<5; ++i){
[s1 replaceOccurrencesOfString:@"A"
withString:@"+B-A-B+"
options:NSLiteralSearch
range:NSMakeRange(0, s1.length)];
[s1 replaceOccurrencesOfString:@"B"
withString:@"-A+B+A-"
options:NSLiteralSearch
range:NSMakeRange(0, s1.length)];
}
// set line color, thickness
ccDrawColor4F(0.8, 1.0, 0.76, 1.0);
glLineWidth(1.0f);
float angle = 0;
float travelDist = 1; // distance in pixels the line is drawn. Can be changed to whatever
CGPoint p = CGPointMake(300,100);
for(int i = 0; i < [s1 length]; i++){
if([[NSString stringWithFormat:@"%c",[s1 characterAtIndex:i]] isEqualToString:@"+"]){ // turn right
angle += 60;
}else if([[NSString stringWithFormat:@"%c",[s1 characterAtIndex:i]] isEqualToString:@"-"]){ // turn left
angle -= 60;
}else{ // any other character, draw line
float cosAngle = cosf(CC_DEGREES_TO_RADIANS(angle));
float newDist = travelDist * cosAngle;
float sinAngle = sinf(CC_DEGREES_TO_RADIANS(angle));
float newDist2 = travelDist *sinAngle;
ccDrawLine(ccp(p.x, p.y), ccp(p.x + newDist, p.y + newDist2));
p = CGPointMake(p.x + newDist, p.y + newDist2);
}
}
我已經閱讀了幾個網站上關於箭頭曲線以及他們必須遵循的規則。看起來我應該做正確的事情,但事實並非如此。我得到了代表謝爾賓斯基三角形的東西,但沒有合適的箭頭曲線。
您可能沒有知道的Objective-C/cocos2d的回答這個問題,因爲我可能只是做一些後勤不正確。