粒子系统 (Particle System) 银牌收录

基于 EasyX 的简单粒子系统,主要用于了解和学习相关概念及算法。 随着萌新的学习,系统在不断的改进和完善中,可以先了解使用一下 +_+ ! 存在不足或错误之处,欢迎大家一起交流讨论。

万有引力运动 银牌收录

这次是模拟二维物体运动的物理作业。原本是用 matlib 模拟三维星体运动的。用 C++只好降成二维了(二向箔出击),因为它只有 X,Y 轴,转三维好像要用旋转函数和一些矩阵转换,我想想就算啦。

四叉树碰撞优化 银牌收录

得闲花点时间写了一下四叉树碰撞优化的 Demo,设置一些参数时候又想着自己写一下 GUI 的东西,于是就动手写了一下,结合以前学习的一些设计模式,自己也算实践了一下吧;可以给一些新手提供一个参考的样例吧。但是目前我刚开发好,写的过程中没有形成很好的文档,注释也不是特别多,要是后面有人感兴趣的话我会在我的 gitee 仓库放入一些实现想法。

烟花 铜牌收录

一个基于物理的烟花小程序,考虑了重力。代码基于 c++ 进行编写的,使用 QueryPerformceCount 进行帧率控制。由于在实现烟花小尾巴时候遍历了一遍屏幕上所有的像素点,虽然使用显示缓冲区进行操作,但是这个循环遍历代价还是很大,所以帧率在我的 cpu i7 7700hq 上,以 1920 * 1080 分辨率一直在 35 帧左右,改成 cleardevice 后能变成100多帧,但是小尾巴没了。虽然小尾巴可以画一连串的颜色渐变亮的小圆表示,但是这样表示我看起来没有对屏幕像素取平均效果好。希望有网友能提供更有效、更好的烟花尾巴解决方案。

热力学模拟实验(by 常数变易法) 铜牌收录

这个程序是热力学模拟实验。

学热力学与统计物理的时候就想设计一个程序模拟气体分子的运动,这样就能直观地检测那些热力学公式的正确性。
这个程序设计成所有粒子之间的力都是斥力,粒子和边界之间也有斥力。粒子在二维平面运动。

程序的动态执行效果如下:

完整代码如下:

// 项目:热力学模拟实验
// 作者:常数变易法(QQ:1375989292)
// 时间:2019.12.19
// 环境:VC6.0

// 学热力学与统计物理的时候就想设计一个程序模拟气体分子的运动,这样就能直观地检测那些热力学公式的正确性。
// 这个程序设计成所有粒子之间的力都是斥力,粒子和边界之间也有斥力。粒子在二维平面运动。

// 版权:作者原创,无抄袭,不涉及版权问题,仅用作学习

#include <graphics.h>						// 引用图形库头文件
#include <stdio.h>
#include <conio.h>
...

物理程序:引力模拟(by 有时的迷惘) 铜牌收录

一个模拟引力的程序。可以在程序中创建不同质量和初始速度的天体,天体按照万有引力定律运行。

左键创建天体。按下左键不松开,天体质量会增加;然后移动,会给天体赋值初始速度,然后松开左键。

右键删除天体。

超出屏幕、碰撞后的天体不会消失。

程序的运行截图如下:

完整源代码、图片及编译后的可执行文件请【点击这里下载】。

作者:有时的迷惘
个人主页:www.baidu.com/p/有时的迷惘

力学:鼠标用弹簧挂着一串小方块 铜牌收录

这个程序模拟了几个小方块用弹簧连接到鼠标上的效果。当鼠标在绘图窗口上移动时,可以看到小方块连续受力的效果。

动态程序就不再抓图了。源代码如下:

///////////////////////////////////////////////////
// 程序名称:力学:鼠标用弹簧挂着一串小方块
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 移植作者:yangw80 <yw80@qq.com>
// 发布日期:2012-4-27
//
#include <graphics.h>
#include <math.h>
#include <time.h>

const	int		WIDTH = 640;		// 窗口宽
const	int		HEIGHT = 480;		// 窗口高
const	int		BOXCOUNT = 10;		// 方块的数量
const	int		BOXSIZE = 10;		
...

力学:模拟橡皮筋(by frxyz1) 铜牌收录

一个模拟橡皮筋的程序。

执行效果:

以下是全部源代码:

///////////////////////////////////////////////////
// 程序名称:模拟橡皮筋
// 编译环境:Visual C++ 6.0 / 2010,EasyX_20210730
// 作  者:frxyz1 <http://hi.baidu.com/frxyz1>
// 最后修改:2012-4-15
//
#include <graphics.h>
#include <conio.h>
#include <stdio.h>

#define NODES 20
#define GRAVITY 1
#define ITER 8

struct Vector
{
	float x, y;

	void operator += (Vector v) { x += v.x; y += v.y; }
	void operator -
...

力学:模拟弹力的小程序(by frxyz1) 铜牌收录

一个模拟弹力的小程序,执行效果如下:

感兴趣的可以再加上几个小球,类似的还可以模拟出绳子的效果。

以下是全部源代码:

///////////////////////////////////////////////////
// 程序名称:模拟弹力的小程序
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20120404(beta)
// 作  者:frxyz1 <http://hi.baidu.com/frxyz1>
// 最后修改:2012-4-14
//
#include <graphics.h>
#include <conio.h>

#define BALL_RADIUS 30 // 小球的半径

void main()
{
	initgraph(640, 480);
	setfillstyle(RGB(255, 0, 0));

	// 小球的初始位置
	float ballx = 320.f, 
...