gpt4 book ai didi

c - 图形(二维旋转)

转载 作者:行者123 更新时间:2023-11-30 19:30:38 28 4
gpt4 key购买 nike

我现在尝试了 8 个多小时来解决这个问题,但无法弄清楚,请帮助找出我的代码有什么问题。

int main() {
int gd = DETECT, gm;
float ANGLE = 360/10 * M_PI/180;

initgraph(&gd, &gm, NULL);
int cx = getmaxx() / 2;
int cy = getmaxy() / 2;
int p[] = {cx-50,cy-150, cx+50,cy-150, cx+50,cy-50, cx-50,cy-50, cx-50,cy-150};

outtextxy(cx, cy, "*");
setcolor(G);

int n, i;
for (n = 0; n < 10; n++)
{
drawpoly(5, p);
for (i = 0; i < 10; i+=2)
{
p[i] = p[i]*cos(ANGLE) - p[i+1]*sin(ANGLE) + cx - cx*cos(ANGLE) + cy*sin(ANGLE);
p[i+1] = p[i]*sin(ANGLE) + p[i+1]*cos(ANGLE) + cy - cx*sin(ANGLE) - cy*cos(ANGLE);
}
}

getch();
closegraph();
return (0);
}

The output

但我需要这样。

expected output

最佳答案

感谢保罗·奥格维。我使用 p[i] 修改后的值而不是旧值,以便进行转换。再次感谢!

新代码:

int main() {
int gd = DETECT, gm;
float ANGLE = 360/10 * M_PI/180;

initgraph(&gd, &gm, NULL);
int cx = getmaxx() / 2;
int cy = getmaxy() / 2;
int p[] = {cx-50,cy-150, cx+50,cy-150, cx+50,cy-50, cx-50,cy-50, cx-50,cy-150};

outtextxy(cx, cy, "*");
setcolor(G);

int n, i, save;
for (n = 0; n < 10; n++)
{
drawpoly(5, p);
for (i = 0; i < 9; i+=2)
{
save = p[i];
p[i] = p[i]*cos(ANGLE) - p[i+1]*sin(ANGLE) + cx - cx*cos(ANGLE) + cy*sin(ANGLE);
p[i+1] = save*sin(ANGLE) + p[i+1]*cos(ANGLE) + cy - cx*sin(ANGLE) - cy*cos(ANGLE);
}
}

getch();
closegraph();
return (0);
}

并输出:

yep

关于c - 图形(二维旋转),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50411413/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com