ロゴ ロゴ

平面上の点を、原点を中心に回すぞ!

こんにちは、じゃた。です。課題シリーズ第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!

コメント入力

関連サイト