错觉图片生成实验 - 椭圆的艺术
(图书介绍:童晶:《C和C++游戏趣味编程》新书预告)
这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(《C和C++游戏趣味编程》配套教学视频)),布置了一次错觉图片生成实验的PBL,给了大家5天时间分组完成代码、ppt报告。
这次,介绍许庄颜、陈悦同学实现的movement in elipse错觉。由于同学们学习C语言刚一个月,还没有正式学习数组、函数等语法知识,因此代码可能不够完善。以下提供了分步骤的实现思路、代码,大家可以参考。
首先是同学们调研的目标效果:
![](/assets/blank.gif)
这种现象可称为“视错觉”,造成这种错觉的原因有两点:第一点是因为当你在看图片的时候,眼球有轻微的扰动;第二点是因为你的注视点和周边区域会有一定的差异。
这张图片由八行大小变化的椭圆组成,它们的长轴保持不变,但短轴慢慢变小,这些重复的结构和强烈的对比形成了某种光学错觉,提供了一种运动感。
1 绘制一行椭圆及画框
利用initgraph函数绘制画框,利用setbkcolor函数填充背景颜色为黄色。利用坐标轴和fillellipse函数绘制一行椭圆
![](/assets/blank.gif)
2 绘制完整一行椭圆及椭圆上异色线条
通过复制代码,修改数据绘制第一行完整的椭圆。利用arc、setlinestyle函数绘制椭圆上不同颜色的曲线。
![](/assets/blank.gif)
3 利用HSVtoRGB调整背景颜色
调整参数,使背景颜色接近图片颜色
![](/assets/blank.gif)
4 利用for语句循环绘制多行椭圆
![](/assets/blank.gif)
#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。
错觉图片生成实验 - 椭圆的艺术相关推荐
- 错觉图片生成实验 - 会动的吃豆人
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 简单的错觉画_错觉图片生成实验 - 正方形错觉
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 错觉图片生成实验 - 旋转花
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 错觉图片生成实验 - 平行线(黑林错觉)
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 错觉图片生成实验 - 正方形错觉
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 错觉图片生成实验 - Go forward together
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 错觉图片生成实验 - 平行的线
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 错觉图片生成实验 - 大小圆圈错觉
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
- 错觉图片生成实验 - 扭曲的黑白棋盘
(图书介绍:童晶:<C和C++游戏趣味编程>新书预告) 这学期的线下C语言课程,大一同学们学完旋转蛇案例后(童晶:第4章 旋转蛇(<C和C++游戏趣味编程>配套教学视频)),布 ...
最新文章
- hdu6376 度度熊剪纸条 思维
- JVM内存占用情况深入分析,分分钟解开你的疑惑
- 全流程解读:建立销售和营销模型的 9 个步骤
- 12.当效率至关重要时,请在map::operator[]与map::insert之间谨慎作出选择
- requests模块发送带headers的Get请求和带参数的请求
- linux中vi模式中c命令,“Linux”系统中“vi ^C ”命令是什么意思?
- 存储树形数据_数据结构篇之顺序表的创建以及实现
- Java限流之 —— Nginx限流
- Myeclipse学习总结(2)——MyEclipse快捷键大全
- 在幼儿园实施亲自然生态教育的思考
- Cisco CCNP 帧中继网络教程
- B站首个千万级up主!论老番茄是如何炼成的!
- 智能挪车v4.8.2-多开版
- 西电数据挖掘实验3——复杂网络社团检测
- 【毕业设计】python+深度学习+opencv实现植物识别算法系统
- Spring Boot从0开始学的个人笔记10 --任务
- 龙族幻想最新东京机器人位置_龙族幻想藤原智坐标位置一览 藤原智任务攻略...
- java与模式--里氏代换原则,依赖倒置原则
- 系统集成项目管理工程师10大管理47个过程域输入输出工具(项目整体管理)
- 人听到坏消息的反应_如何应对坏消息,正确传达坏消息的七个方法
热门文章
- Ubuntu无显示器远桌面程连接分辨率低图标大问题解决方法
- JMeter基本使用
- A/B-test显著性检验
- model java_编程中的 Model 到底是什么?
- SpringBoot + Vue 实现基于 WebSocket 的聊天室(单聊)
- 如何用python 炒股赚钱_教程 | 如何用Python和机器学习炒股赚钱?
- ACM图论+数据结构杂题总结
- 【利用二进制位做输出】抖音上“输出方块8”的看法
- 增长:IT运维发展趋势报告
- 微信公众号又改版了!这是最最全面的解读了[联络易]