ここから本文です

人の足跡の波形を描きたいんですが描けません。どこに問題がありますか?かかと→つ...

yos********さん

2008/10/2418:03:18

人の足跡の波形を描きたいんですが描けません。どこに問題がありますか?かかと→つま先→中心線→逆のかかと→つま先・・・おそらくアルゴリズムは合ってるとおもうのですが。分かりにくくてすみません

#include <GL/glut.h>
#include <math.h>

int a, n, i, s, h, m[100], st[100], ho[100], an[100], p;
float rad;


void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3d(1.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex2d(0.5, -4);
glVertex2d(0.5, 4);
glEnd();
glColor3d(1.0, 0.0, 0.0);
glBegin(GL_LINE_STRIP);
glVertex2d(0.5,-3.9);
if(h==1)
{
a=s*0.025;
m[0]=0;
p=1;
for(i=1;i<=n;i++)
{
rad = an[i] / 180.0 * 3.1415926, /*足角の設定*/
glVertex2d((p*ho[i]*0.5*0.05)+0.5,-3.9+m[i-1]); /*足のかかと*/
glVertex2d((p*ho[i]*0.5*0.05)+0.5+(sin(rad)*a),cos(rad)*a-3.9+m[i-1]); /*足のつま先*/
glVertex2d(0.5,cos(rad)*a-3.9+m[i-1]); /*つま先と平行な中心線上*/
glVertex2d(0.5,st[i]*0.025-3.9+m[i-1]); /*次と平行な中心線上*/
m[i]=st[i]*0.025+m[i-1];
p=-1*p;
}
}
if(h==0)
{
a=s*0.025;
m[0]=0;
p=-1;
for(i=1;i<=n;i++)
{
rad = an[i] / 180.0 * 3.1415926, /*足角の設定*/
glVertex2d((ho[i]*0.025)*p+0.5,-3.9+m[i-1]); /*足のかかと*/
glVertex2d((ho[i]*0.025)*p+0.5+(sin(rad)*a),cos(rad)*a-3.9+m[i-1]); /*足のつま先*/
glVertex2d(0.5,cos(rad)*a-3.9+m[i-1]); /*つま先と平行な中心線上*/
glVertex2d(0.5,st[i]*0.025-3.9+m[i-1]); /*次と平行な中心線上*/
m[i]=st[i]*0.025+m[i-1];
p=-1*p;
}
}
glEnd();
glFlush();
}
void resize(int w, int h)
{
glViewport(0, 0, w, h);
glLoadIdentity();
glOrtho(-w /100 ,w / 100, -h /100, h / 100, -1.0, 1.0);

}

void init(void)
{
glClearColor(1.0, 1.0, 1.0, 1.0);
}

int main(int argc, char *argv[])
{
printf("歩数を入力\n");
scanf("%d", &n);
printf("足長を入力\n");
scanf("%f", &s);
printf("一歩目が左なら0を、右なら1を入力\n");
scanf("%f",&h);
for(i=1;i<=n;i++)
{
printf("%d歩目のデータを入力\n",i);
printf("ステップ長を入力\n");
scanf("%f", &st[i]);
printf("歩隔を入力\n");
scanf("%f", &ho[i]);
printf("足角を入力\n");
scanf("%f", &an[i]);
}

glutInitWindowPosition(100, 100);
glutInitWindowSize(500,500);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(resize);
init();
glutMainLoop();
return 0;
}

閲覧数:
475
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

jar********さん

2008/10/2509:00:34

僕が指摘できるのは変数の型が違うということぐらいで、計算のところはわかりません。
main関数が正しいならこうでしょう。
int n,i;
float a, s, h, m[100], st[100], ho[100], an[100], p;

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

hel********さん

2008/10/2508:15:55

紙と鉛筆とモデルになる足があれば書けます!!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる