|
#include <stdio.h>
#include <math.h>
typedef struct _POINT
{
float x, y;
}POINT;
float PointToLength(POINT* pt)
{
return sqrt((pt->x * pt->x) + (pt->y * pt->y));
}
float DotProduct(POINT* pt1, POINT* pt2)
{
return pt1->x * pt2->x + pt1->y * pt2->y;
}
float VecToDegree(POINT* pt1, POINT* pt2)
{
return DotProduct(pt1, pt2) / (PointToLength(pt1) * PointToLength(pt2));
}
int main()
{
POINT pt1, pt2;
printf("1点目の入力:");
scanf("%f %f", &pt1.x, &pt1.y);
printf("2点目の入力:");
scanf("%f %f", &pt2.x, &pt2.y);
printf("1点目の長さ:%f\n", PointToLength(&pt1));
printf("2点目の長さ:%f\n", PointToLength(&pt2));
printf("内積の値:%f\n", DotProduct(&pt1, &pt2));
printf("cosθの値:%f\n", VecToDegree(&pt1, &pt2));
return 0;
}
cosθの値はでるけど、θそのものの出し方は知らん。
θを使った何らかの式がありさえすれば式変形で出せるんだろうがな。
|
atan2()(だっけ)を調べてみるのが吉かと
2008/12/31(水) 午後 10:43
なるほど、米ありがとうございます
2009/1/5(月) 午後 2:44 [ GRGSIBERIA ]