質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
いさご

質問です

#1

投稿記事 by いさご » 18年前

こんばんは。いつもお世話になってます。
今、動いた座標の点を表示するプログラムでを書いています。
下はプログラムの一部ですが、点を動かしている関数です。
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に戻れません。
何がいけないのでしょうか?
どなたか助けてください。お願いします。

ぽん太

Re:質問です

#2

投稿記事 by ぽん太 » 18年前

座標計算する度に実際の値からのズレが蓄積されていると思われます。

いさご

Re:質問です

#3

投稿記事 by いさご » 18年前

回答ありがとうございます。
(int)の位置を変えてみたらズレがなくなりました。
こんな些細なことですみません・・・。
お騒がせしました。

閉鎖

“C言語何でも質問掲示板” へ戻る