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

本文介绍了大一学生使用C语言完成的错觉图片生成实验,特别是平行线(黑林错觉)的实现。学生们在没有学习数组和函数等高级语法的情况下,通过line函数和for循环,逐步绘制出两侧、上下直线,以及产生错觉的平行线。通过多层if语句实现了图形的旋转功能,增加了趣味性。实验心得强调了策划、合作、循环使用以及代码可读性的重要性。
摘要由CSDN通过智能技术生成

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

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

这次,介绍曾奕杰、谷瑞、王世博、王鑫洋同学实现的平行线(黑林错觉)。由于同学们学习C语言刚一个月,还没有正式学习数组、函数等语法知识,因此代码可能不够完善。以下提供了分步骤的实现思路、代码,大家可以参考。

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

v2-66cf57d40ae8f5d7953e91998a0ec606_b.jpg

黑林错觉又称为黑灵错觉,赫氏错觉等,这一现象在当时用于研究人眼对错觉的判断,到19世纪末曾试用于审判犯人。

原理:当人观察物体时,基于经验主义或不当的参照所形成的错误的判断和感知。

目标效果:两条平行的直线,被许多在平行线中间相交的直线分割后,看起来这两条平行线显得向外弯曲。在平行线中间相交的直线越密,两个平行线看起来会更弯。当双眼失焦再去看这两条平行线,你又会觉得他们是直的。

1 绘制两侧直线

在画面的左右侧绘制均匀的且相交的多条直线。

依靠line函数与for语句达到目的。

v2-aadd512a6e62f2c22aa483f17279c701_b.jpg

2 绘制上下直线

在画面的上下两方绘制出直线。

设置多组变量用以表示直线坐标,也依靠line函数与for语句实现目标。

v2-73462bfa77c32b63a62a900cd1a369eb_b.jpg

3 绘制平行线

这一步要绘制两条产生错觉的平行线,同时设置线条参数使效果更加明显。

主要依靠EasyX函数来设置线条色彩与粗细。

v2-66cf57d40ae8f5d7953e91998a0ec606_b.jpg

4 绘制多组图形

这一步要绘制出多组相同的黑林错觉图形。

引入多个变量用以表示线条坐标,利用for语言的嵌套绘制图形,达到目的。

v2-fc89d7efd5c67303773d67b7eb1b9e0d_b.jpg

5 让“它”转起来

为增加图形的趣味性,添加了图形可旋转的功能。

使用多层if语句,交换直线坐标,实现图形的旋转,也让错觉效果更佳明显。

如果觉得单个图片没有效果,可以尝试长按空格,加速!

v2-27afe9d586a7cd9a402d72f78b084b44_b.jpg
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<time.h>
int main()
{
     
	initgraph(1200,800);//打开一个窗口
	setbkcolor(WHITE);
	cleardevice();
	int i,k,j,m,n;
	int x0,y0;//线的交点
	int x1,y1;//左侧极限坐标
	int x2,y2;//右侧极限坐标
	int x3,y3;//左上方直线终点
	int x4,y4;//右上方直线终点
	int x5=0,y5=
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值