C言語の課題
何度も申し訳ありません
http://okwave.jp/qa/q7877142.html
より、回答を受けてプログラムを作成したのですが、
衝突時の時間と座標をどのように作成すれば良いか分からなく、
一秒後の点Pの位置を算出したのですが、合っているかどうかが分かりません。
非常に難しくで困っています。お助け下さい。
ソースコード
#include <stdio.h>
#include<math.h>
int main(void)
{
float p,v,vx,vy,x,y,x1,y1,katamuki,gyaku,seiki_x,seiki_y,n,touei_x,touei_y,idoux,idouy,px,py;
/*
p=(x,y);
v=(vx,vy);
*/
x=1.0;
y=1.0;
vx=1.0; //x方向の速さ
vy=-2.0; //y方向の速さ
y1=-x; //逆数
x1=-y; //逆数
printf("逆数は(x1,y1)=(%f,%f)\n",x1,y1);
seiki_x=x1/(sqrt(x1*x1+y1*y1));
seiki_y=y1/(sqrt(x1*x1+y1*y1));
printf("正規化、(x方向,y方向)=(%f,%f)\n",seiki_x,seiki_y);
n=-(vx*seiki_x)+(vy*seiki_y); //nは内積
touei_x=n*seiki_x; //touei_xは投影x軸
touei_y=n*seiki_y; //touei_yは投影y軸
printf("投影ベクトル(x,y)=(%f,%f)\n",touei_x,touei_y);
idoux=vx+2*touei_x; //衝突後、点Pのxの移動方向
idouy=vy+2*touei_y; //衝突後、点Pのyの移動方向
px=-idoux; //点Pのx座標
py=-idouy; //点Pのy座標
printf("1秒後の位置は点P(x,y)=(%f,%f)",px,py);
return 0;
}
/*
逆数は(x1,y1)=(-1.000000,-1.000000)
正規化、(x方向,y方向)=(-0.707107,-0.707107)
投影ベクトル(x,y)=(-1.500000,-1.500000)
1秒後の位置は点P(x,y)=(2.000000,5.000000)
*/