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

在C语言课程中,学生通过PBL项目实现了错觉图片生成,特别是动态艾宾浩斯幻觉。他们用简单代码描绘出红圆与蓝圆的视觉错觉效果,虽然语法尚不成熟,但展示了编程思维和解决问题的能力。文章详细介绍了从画小球到小球移动的实现步骤,以及中间小球的特殊处理。
摘要由CSDN通过智能技术生成

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

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

这次,介绍汪佳磊、刘宇、李智锋、郝泽楷同学实现的大小圆圈错觉。由于同学们学习C语言刚一个月,还没有正式学习数组、函数等语法知识,因此代码可能不够完善。以下提供了分步骤的实现思路、代码,大家可以参考。

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

v2-7412202aceccb733125ba7cc5331fd6a_b.jpg

动态艾宾浩斯幻觉:

红圆大小相同,蓝圆大小不同;因红圆周围参照物不同,形成左边红圆小、右边红圆大的视觉错觉。

1.画一个小球

设置小球颜色,用数组存入小球数据

v2-021abe0a469dc9af3829fada775bc9d3_b.jpg

2.画七个小球

大小圆位置关系

设置圆心连线的角度

还要用上函数

再用for循环输出

v2-2c80c15d5c4df91e6e33c8bab25da72a_b.jpg

3.七个小球移动

设置初始位置

设置速度

利用while循环

实现小球移动

到达边界速度反向

v2-e406d16d7e2065b7dfb1189cdd9bcbf1_b.jpg

4.中间小球单独移动、改变大小

#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <math.h>
/********** 定义全局变量 **********/
#define WIDTH 1000
#define LENGTH 1000
#define PI 3.1415926
/********** 绘制中间的圆 **********/
void originCircle(double x, double y, double r)
{
     
	setfillcolor(RGB(255, 0, 0));
	solidcircle(x, y, r);
}
/********** 绘制旁边的一个小圆 **********/
void surroundCircle(double x, double y, double r)
{
     
	setfillcolor(BLUE);
	solidcircle(x, y, r);
}
/********** 插入滑稽图片后一起移动 **********/
void funnyMove(double x, double y, double r)
{
     
	IMAGE img; // 插入图片
	loadimage(&img, _T("D:\\图片2.png"), 2 * r, 2 * r, true);
	putimage(x - r, y - r, &img);
}
int main(void)
{
     
	initgraph(WIDTH, LENGTH);
	int drawMode = 1;
	double x[7], y[7], r[7];//7个小圆的坐标半径
	x[0] = 250, y[0] = 200, r[0] = 35;//中间小圆的原始坐标半径
	double<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值