[译] 短小精悍又不可思议的数学艺术挑战赛 - 作品集 1
[译] 短小精悍又不可思议的数学艺术挑战赛及各路大神优秀作品展示
图片滤镜系列:波浪线叠加效果(手动抗锯齿)
鼠标操作演示
艺术字系列:冰封的 EasyX
用绘图语句画机器猫(初学 C 语言的同学必看)
用绘图语句画安卓(android)机器人(初学 C 语言的同学必看)
做个纪念:椭圆组合而成的抽象图案
每次看到这个程序我就会想起高中时曾那么痴迷编程。当时看到一本书的封面有这个图案,就用那个时候学的 QuickBasic 写了这个程序。现在移植到 VC 上,做个纪念吧。
执行效果如下:
代码如下:
// 程序名称:椭圆组合而成的抽象图案
// 编译环境:Visual C++ 6.0/2010,EasyX_20210730
// 最初编写:1998-2-21,by yw80@qq.com(QuickBasic 版本)
// 最后修改:2011-3-23,by yw80@qq.com
//
// 高中时候看到一本书的封面有这个图案,就用当时学的 QuickBasic 写了这个程序。
// 现在移植到 VC6 上,做个纪念。
//
#include <graphics.h>
#include <conio.h>
#include <math.h>
const double PI = 3.1415926536;
// 四舍五入
int
...
计算任意扇形的最小包围矩形
今天很偶然需要这样一个东西:
求任意扇形的最小包围矩形,要求矩形的边是水平、垂直的。
这个东西看似很简单,但是仔细一想,需要注意的地方蛮多的,还真有点不好下手。再回想一下,好像没有那本书里面讲过。然后百度了一下,似乎也没找到有效的方法。于是我就花了点时间搞定了这个东西,然后顺手写了一个例子演示效果。
如果您有更好的方法,十分期待交流一下。
以下代码除了包含必要的求解任意扇形的最小包围函数之外,还加上了鼠标操作:按下左键移动鼠标,可以调整终止角的弧度;同时按下 Shift 键移动,可以调整起始角的弧度。
执行效果如图:
完整代码如下:
///////////////////////////////////////////////////
// 程序名称:计算扇形的最小包围矩形
// 编译环境:Visual C++ 6.0 / 2019,EasyX 20210730
// 作 者:yangw80 <yw80
...
高等数学图形:玫瑰曲线
在极坐标系中,以下方程表示的曲线称为玫瑰曲线:
r = sin ( k θ ) 或 r = cos ( k θ )
当 k 是奇数时,玫瑰曲线有 k 个花瓣;当 k 是偶数时,玫瑰曲线有 2k 个花瓣。执行效果如下图:
可以按 A-Z 和 a-z 调整参数,绘制不同的玫瑰曲线。例如,k = n / d = 2 / 1,就是四叶玫瑰曲线,k = n / d = 3 / 1,就是三叶玫瑰曲线。
源代码如下:
////////////////////////////////////////////
// 程序名称:高等数学图形:玫瑰曲线
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版
// 程序编写:yangw80 <yw80@qq.com>
// 最后更新:2011-7-11
//
#include <graphics.h>
#include <stdio.h>
...
漂亮的四叶草
前几天有网友在 QQ 群“C 语言革命”里面发了一段 Turbo C 代码,感觉蛮漂亮的,我就将代码移植到 VC + EasyX 下面(稍作了一点格式上的修改)。
执行效果如下:
源代码如下:
///////////////////////////////////////////////////
// 程序名称:漂亮的四叶草
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 作 者:yangw80 <yw80@qq.com>
// 最后修改:2011-10-14
// 注:源程序是网友发在 QQ 群“C 语言革命”里面的 Turbo C 代码,我修改的
//
#include <graphics.h>
#include <math.h>
#include <conio.h>
#define PI 3.1415926535
void main(void)
{
// 初始化绘图窗口
...
吸顶灯上的一个图案,由若干圆弧组成
也不知道这个程序该叫什么名字,是我最早学编程的时候写的。那时候看见什么东西都想用程序画出来,然后偶然间在一个吸顶灯的灯罩上看到了这样的图案,于是就写了一个程序来生成。
执行效果如下:
代码如下:
// 程序名称:圆弧组成的图案
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
// 最后修改:2011-3-7
//
#include <graphics.h>
#include <conio.h>
#include <math.h>
#define PI 3.1415926536
#define R 200
// 四舍五入
int Round(double x)
{
return (int)(x < 0 ? x - 0.5 : x + 0.5);
}
// 主函数
void main()
{
// 变量定义
int x, y; // 坐标
double a; // 弧度
// 绘图环境
...
带一盏油灯去巡视仓库
今天是 2013 年光棍节,写个程序庆祝一下,呵呵。
本程序模拟了这样一个场景:一个空地上乱七八糟地堆了一些货物,一个孤独的仓库管理员,带了一盏油灯,去巡视这些货物。
在鼠标的位置会亮起一盏油灯,随着鼠标的移动,部分光线会被仓库的货物遮挡。
就不抓图了,有兴趣的运行一下代码看看效果吧,【点这里下载编译后的 exe 文件】。
以下是全部源代码:
/////////////////////////////////////////////////////////
// 程序名称:带一盏油灯去巡视仓库
// 编译环境:Visual C++ 6.0 / 2010,EasyX 2013霜降版
// 作 者:yangw80 <http://hi.baidu.com/yangw80>
// 最后修改:2013-11-11
//
#include <graphics.h>
#include <conio.h>
#include &
...
火焰效果模拟程序
模拟火焰效果的程序。
执行效果抓图如下:
通过修改色系,本程序可以实现红色火焰、蓝色火焰、绿色火焰三种效果,在 InitFire() 函数中取消相应行注释可以实现不同色系的火焰效果。
完整的源代码如下:
///////////////////////////////////////////////////
// 程序名称:火焰模拟程序
// 编译环境:VC6.0 / VC2010,EasyX_20200727
// 作 者:yangw80 <yw80@qq.com>
// 最后修改:2012-1-21
// PS: 核心算法参考的微软范例,在此感谢。
//
#include <graphics.h>
#include <conio.h>
#include <time.h>
// 宏常量
#define WIDTH 640
#define HEIGHT 480
#define FIREWIDTH 3
...