138.正方形螺旋拼块图案

举报
C语言与CPP编程 发表于 2022/05/10 22:02:00 2022/05/10
【摘要】 #include <graphics.h>#include <math.h>void polygonc();void block(); void main(){ int i,j,a,length,n,theta,x=100,y=350; int gdriver=DETECT,gmode; printf("inpu...

  
  1. #include <graphics.h>
  2. #include <math.h>
  3. void polygonc();
  4. void block();
  5. void main()
  6. {
  7. int i,j,a,length,n,theta,x=100,y=350;
  8. int gdriver=DETECT,gmode;
  9. printf("input length, n theta:");
  10. scanf("%d%d%d",&length,&n,&theta);
  11. initgraph(&gdriver,&gmode,"c:\\tc");
  12. cleardevice();
  13. setbkcolor(9);
  14. setcolor(4);
  15. a=length/4;
  16. for(i=1;i<=4;i++)
  17. {
  18. for(j=1;j<=4;j++)
  19. {
  20. block(x,y,a,n,theta);
  21. theta=-theta;
  22. x=x+a;
  23. }
  24. x=100;
  25. y=y-a;
  26. theta=-theta;
  27. }
  28. getch();
  29. closegraph();
  30. }
  31. void polygonc(x0,y0,r,n,af)
  32. int x0,y0,n,r;
  33. float af;
  34. {
  35. int x,y,xs,ys,i;
  36. float dtheta,theta;
  37. if(n<3)
  38. return;
  39. dtheta=6.28318/n;
  40. theta=af*0.0174533;
  41. xs=x0+r*cos(theta);
  42. ys=y0+r*sin(theta);
  43. moveto(xs,ys);
  44. for(i=1;i<n;i++)
  45. {
  46. theta=theta+dtheta;
  47. x=x0+r*cos(theta);
  48. y=y0+r*sin(theta);
  49. lineto(x,y);
  50. }
  51. lineto(xs,ys);
  52. }
  53. void block(x,y,a,n,theta)
  54. int x,y,a,n,theta;
  55. {
  56. int x0,y0,i,r;
  57. float t,f,af=45.;
  58. t=fabs(theta*0.0174533);
  59. f=1.0/(cos(t)+sin(t));
  60. r=a/1.414;
  61. x0=x+0.5*a;
  62. y0=y+0.5*a;
  63. for(i=1;i<=n;i++)
  64. {
  65. polygonc(x0,y0,r,4,af);
  66. r=r*f;
  67. af=af-theta;
  68. }
  69. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124665396

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。