(图书介绍:童晶:《C和C++游戏趣味编程》新书预告)

这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(《C和C++游戏趣味编程》配套教学视频)),布置了一次错觉图片生成实验的PBL,给了大家5天时间分组完成代码、ppt报告。

这次,介绍许庄颜、陈悦同学实现的movement in elipse错觉。由于同学们学习C语言刚一个月,还没有正式学习数组、函数等语法知识,因此代码可能不够完善。以下提供了分步骤的实现思路、代码,大家可以参考。

首先是同学们调研的目标效果:

这种现象可称为“视错觉”,造成这种错觉的原因有两点:第一点是因为当你在看图片的时候,眼球有轻微的扰动;第二点是因为你的注视点和周边区域会有一定的差异。

这张图片由八行大小变化的椭圆组成,它们的长轴保持不变,但短轴慢慢变小,这些重复的结构和强烈的对比形成了某种光学错觉,提供了一种运动感。

1 绘制一行椭圆及画框

利用initgraph函数绘制画框,利用setbkcolor函数填充背景颜色为黄色。利用坐标轴和fillellipse函数绘制一行椭圆

2 绘制完整一行椭圆及椭圆上异色线条

通过复制代码,修改数据绘制第一行完整的椭圆。利用arc、setlinestyle函数绘制椭圆上不同颜色的曲线。

3 利用HSVtoRGB调整背景颜色

调整参数,使背景颜色接近图片颜色

4 利用for语句循环绘制多行椭圆

#include<conio.h>
#include<stdio.h>
#include<graphics.h>

int main()
{COLORREF color;float H=220;float S=0.5;float L=0.5;float pi=3.14;int left,right,top=15,bottom,step=4;int a=60,b=8;//长轴与短轴
    bottom=top+a;int i,d;//行数,行据
    d=a+20;// 初始化绘图窗口
    initgraph(908, 800);setbkcolor(HSVtoRGB(58,0.8,0.8));// 用背景色清空屏幕
    cleardevice();for (top=15;top<500;top=top+a+20){left=2;right=left+b;bottom=top+a;color=HSVtoRGB(H,S,L);//HSV设置的颜色
        setfillcolor(color);//设置填充颜色为color
        setlinecolor(BLACK);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 2.5);fillellipse(left,top,right,bottom);setlinecolor(WHITE);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 3);arc(left,top,right,bottom,pi/2*3,pi/2);for (b=12;b<=20;b=b+4)//1
        {left=right+step;right=left+b+step;step=b+10;bottom=top+a;color=HSVtoRGB(H,S,L);//HSV设置的颜色
            setfillcolor(color);//设置填充颜色为color
            setlinecolor(BLACK);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 2.5);fillellipse(left,top,right,bottom);setlinecolor(WHITE);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 3);arc(left,top,right,bottom,pi/2*3,pi/2);}for (b=20;b>=8;b=b-4)//1
        {left=right+step;right=left+b+step;step=b-10;bottom=top+a;color=HSVtoRGB(H,S,L);//HSV设置的颜色
            setfillcolor(color);//设置填充颜色为color
            setlinecolor(BLACK);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 2.5);fillellipse(left,top,right,bottom);setlinecolor(WHITE);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 3);arc(left,top,right,bottom,pi/2*3,pi/2);}right=right+4;//略微间隔开来
        for (b=12;b<=20;b=b+4)//2
        {left=right+step;right=left+b+step;step=b+10;bottom=top+a;setfillcolor(color);//设置填充颜色为color
            setlinecolor(BLACK);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 2.5);fillellipse(left,top,right,bottom);setlinecolor(WHITE);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 3);arc(left,top,right,bottom,pi/2,pi/2*3);}for (b=20;b>=8;b=b-4)//2
        {left=right+step;right=left+b+step;step=b-10;bottom=top+a;color=HSVtoRGB(H,S,L);//HSV设置的颜色
            setfillcolor(color);//设置填充颜色为color
            setlinecolor(BLACK);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 2.5);fillellipse(left,top,right,bottom);setlinecolor(WHITE);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 3);arc(left,top,right,bottom,pi/2,pi/2*3);}right=right+4;//略微间隔开来
        for (b=12;b<=20;b=b+4)//3
        {left=right+step;right=left+b+step;step=b+10;bottom=top+a;color=HSVtoRGB(H,S,L);//HSV设置的颜色
            setfillcolor(color);//设置填充颜色为color
            setlinecolor(BLACK);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 2.5);fillellipse(left,top,right,bottom);setlinecolor(WHITE);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 3);arc(left,top,right,bottom,pi/2*3,pi/2);}for (b=20;b>=8;b=b-4)//3
        {left=right+step;right=left+b+step;step=b-10;bottom=top+a;color=HSVtoRGB(H,S,L);//HSV设置的颜色
            setfillcolor(color);//设置填充颜色为color
            setlinecolor(BLACK);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 2.5);fillellipse(left,top,right,bottom);setlinecolor(WHITE);setlinestyle(PS_SOLID  | PS_JOIN_BEVEL, 3);arc(left,top,right,bottom,pi/2*3,pi/2);}}_getch();closegraph();
}

总结体会:学会了团队协作的重要性,代码敲不出的时候互相鼓励再不断的调试中才能ac。

错觉图片生成实验 - 椭圆的艺术相关推荐

  1. 错觉图片生成实验 - 会动的吃豆人

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  2. 简单的错觉画_错觉图片生成实验 - 正方形错觉

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  3. 错觉图片生成实验 - 旋转花

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  4. 错觉图片生成实验 - 平行线(黑林错觉)

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  5. 错觉图片生成实验 - 正方形错觉

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  6. 错觉图片生成实验 - Go forward together

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  7. 错觉图片生成实验 - 平行的线

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  8. 错觉图片生成实验 - 大小圆圈错觉

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

  9. 错觉图片生成实验 - 扭曲的黑白棋盘

    (图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...

最新文章

  1. hdu6376 度度熊剪纸条 思维
  2. JVM内存占用情况深入分析,分分钟解开你的疑惑
  3. 全流程解读:建立销售和营销模型的 9 个步骤
  4. 12.当效率至关重要时,请在map::operator[]与map::insert之间谨慎作出选择
  5. requests模块发送带headers的Get请求和带参数的请求
  6. linux中vi模式中c命令,“Linux”系统中“vi ^C ”命令是什么意思?
  7. 存储树形数据_数据结构篇之顺序表的创建以及实现
  8. Java限流之 —— Nginx限流
  9. Myeclipse学习总结(2)——MyEclipse快捷键大全
  10. 在幼儿园实施亲自然生态教育的思考
  11. Cisco CCNP 帧中继网络教程
  12. B站首个千万级up主!论老番茄是如何炼成的!
  13. 智能挪车v4.8.2-多开版
  14. 西电数据挖掘实验3——复杂网络社团检测
  15. 【毕业设计】python+深度学习+opencv实现植物识别算法系统
  16. Spring Boot从0开始学的个人笔记10 --任务
  17. 龙族幻想最新东京机器人位置_龙族幻想藤原智坐标位置一览 藤原智任务攻略...
  18. java与模式--里氏代换原则,依赖倒置原则
  19. 系统集成项目管理工程师10大管理47个过程域输入输出工具(项目整体管理)
  20. 人听到坏消息的反应_如何应对坏消息,正确传达坏消息的七个方法

热门文章

  1. Ubuntu无显示器远桌面程连接分辨率低图标大问题解决方法
  2. JMeter基本使用
  3. A/B-test显著性检验
  4. model java_编程中的 Model 到底是什么?
  5. SpringBoot + Vue 实现基于 WebSocket 的聊天室(单聊)
  6. 如何用python 炒股赚钱_教程 | 如何用Python和机器学习炒股赚钱?
  7. ACM图论+数据结构杂题总结
  8. 【利用二进制位做输出】抖音上“输出方块8”的看法
  9. 增长:IT运维发展趋势报告
  10. 微信公众号又改版了!这是最最全面的解读了[联络易]