こんばんは。いつもお世話になってます。
今、動いた座標の点を表示するプログラムでを書いています。
下はプログラムの一部ですが、点を動かしている関数です。
mainStringというリストにF+F+F+F+F+F+F+Fが入ってます。
指定した角度でFが進行、+が時計回りに角度変更、-が反時計回りに角度変更と言われました。
それで8角形を描きたいのですが、想定の座標からずれてしまいます。
void move(List *mainString){
int length = 10;
int x = 0;
int y = 0;
double startAngle = 0;
double inputAngle = 0.7853981633974483;
double startAngle = 0;
assert(mainString);
Node *currentNode = mainString->head;
printf("%d.%d\n",x,y);
while(currentNode){
if(currentNode->data == 'F'){
x = x + ((int)length * sin(startAngle));
y = y + ((int)length * cos(startAngle));
printf("%d.%d\n",x,y);
}else if(currentNode->data == '+'){
startAngle = startAngle + inputAngle;
}else if(currentNode->data == '-'){
startAngle = startAngle - inputAngle;
}
currentNode = currentNode->next;
}
}
このまま走らせると、
0.0
0.10
7.17
17.17
24.9
24.-1
16.-8
6.-8
-1.0
になってしまい、0.0に戻れません。
何がいけないのでしょうか?
どなたか助けてください。お願いします。