平面上の点を、原点を中心に回すぞ!
こんにちは、じゃた。です。課題シリーズ第5弾です。今回は点をくるくる回すプログラムです。構造体を使います。
今回のプログラムについて
2次元上の点を、原点を中心として回転させます。また、今回の条件は以下の通りです。
1. 2次元座標値(x,y)を構造体に格納
2. 点の初期位置は(1,0)
3. 回転角度は整数で入力(0入力で終了)
4. 座標は小数2桁まで表示
プログラム
こんな感じで書いてみました。
#include<stdio.h>
#include<math.h>
typedef struct point{
double x, y;
}point;
void rotate(point *, int);
int main(void){
int angle = 1;
point p = {1.00, 0.00};
while(angle != 0){
printf("点pは(%.2lf,%.2lf)\n", p.x, p.y);
printf("何度回転させますか?(0で終了)\n角度 > ");
scanf("%d",&angle);
printf("\n");
if(angle == 0) break;
else rotate(&p, angle);
}
printf("終了\n");
return 0;
}
void rotate(point *p, int d){
double a = p->x, b = p->y;
//回す角度をラジアンの単位で取得
double pi, rad;
pi = 6.0 * asin(0.5);
rad = d * (pi / 180.0);
a = (cos(rad) * p->x) + (-sin(rad) * p->y);
b = (sin(rad) * p->x) + (cos(rad) * p->y);
p->x = a;
p->y = b;
}
おわりに
ポインタ嫌い😢
最後まで見てくれてありがとうございます!See You Next Time!
コメント入力