나는 c에서 2 차원 어레이 조작으로 실험하고있었습니다. 나는 내 연구를하고 함께했다 특히 2 차원 형태의 현재 위치에서 회전, 그래서 :C에서 직사각형 배열의 2D 회전
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define RAD(x) ((x) * 3.14/180)
char shape[3][3] = {{1, 1, 1},
{1, 0, 1},
{1, 1, 1}};
char nf[5][5]= {{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}};
char expa[5][5]= {{0, 0, 1, 0, 0},
{0, 1, 0, 1, 0},
{1, 0, 0, 0, 1},
{0, 1, 0, 1, 0},
{0, 0, 1, 0, 0}};
void print(int row, int col, char shapein[][col]) {
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
printf("%c", ((shapein[i][j]) == 1) ? '#' : ' ');
}
printf("\n");
}
}
void main() {
int nw = 5;
int nh = 5;
int xf = nw/2;
int yf = nh/2;
float angle = RAD(90);
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
int nx = ((i - xf) * cos(angle) - (j - yf) * sin(angle)) + xf;
int ny = ((i - xf) * sin(angle) + (j - yf) * cos(angle)) + yf;
nf[nx][ny] = shape[i][j];
}
}
print(5, 5, nf);
}
이 같은 출력을 얻을 것으로 예상했다 : 내가 얻을 그러나 무엇
을 입니다 :
나는 내 연구에서 이해 무슨 짓: - rotati 원점에서 일어나는 일 (왼쪽 상단을 가정) - 원점 눈금이되도록 이동 된 좌표. - 회전 할 때 출력 배열의 치수를 공백으로 사용합니다.
나는 혼란스럽고, 조금 도움이 필요합니다. 내 코드에서 알 수 있듯이 새로운 원형 치수를 하드 코딩했습니다. "최대 모서리"방법을 사용하지 않고 새로운 회전 치수를 동적으로 계산하는 방법을 알려주는 것이 좋을 것입니다. . 예상
색인을 얻으려면 문자 그대로 각도로 회전하고 있습니까? – coderredoc
그렇습니다. 나는 인덱스를 좌표 – user3414321