EasyX—模拟小球自由落体

 1 #include <stdio.h>
 2 #include <graphics.h>
 3
 4 #define SCREEN_WIDTH 640
 5 #define SCREEN_HEIGHT 480
 6 #define R 20
 7 #define T 0.01
 8 #define G 9.8
 9 #define EPSILON 5E-3
10
11 int main() {
12     initgraph( SCREEN_WIDTH, SCREEN_HEIGHT );
13     circle( SCREEN_WIDTH / 2, R, R );
14
15     double h = R;   //小球当前的位置
16     double v = 0.0; //初速度
17
18     BeginBatchDraw();
19
20     while( h <= SCREEN_HEIGHT - R ) {
21         circle( SCREEN_WIDTH / 2, h, R );   //重新绘制小球
22         FlushBatchDraw();
23
24         Sleep( 1 );
25         h = h + v * T + 0.5 * G * T * T;
26         v = v + G * T;
27         if( h > SCREEN_HEIGHT - R ) {
28             h = SCREEN_HEIGHT - R;
29             v = 0.7 * v;
30             v = -v;
31         }
32
33         if( abs( v ) < EPSILON && h >= SCREEN_HEIGHT - R ) {
34             break;
35         }
36         cleardevice();
37     }
38     EndBatchDraw();
39
40     closegraph();
41     return 0;
42 }
时间: 2024-11-04 19:33:11

EasyX—模拟小球自由落体的相关文章

使用CSS3动画模拟实现小球自由落体效果

使用纯CSS代码模拟实现小球自由落体效果: html代码如下: 1 <div id="ballDiv"> 2 <div id="ball"></div> 3 </div> CSS样式代码: /*ball样式*/ #ballDiv{ height:400px; background-color:#333333;} #ball{ width:100px; height:100px; border-radius:50%; b

小球自由落体动态模拟(Position Based Simulation)

在过去的几十年中,基于物理的三维物体动态模拟成为了计算机图形学的研究热点,其中最常见的方法是基于力(force-based)的模拟方法,比如弹簧质点模型http://www.cnblogs.com/shushen/p/5473264.html,它把物体抽象成一系列质点以及连接这些质点的弹簧,然后通过离散化牛顿运动定律来模拟物体的运动情况.最近,基于位置的模拟方法在刚体.弹性体以及流体模拟方面都取得了不错的效果,基于位置(position-based)的模拟方法虽然没有基于力的模拟方法计算准确,但

canvas动画:自由落体运动

经过前面的文章,我们已经能够在canvas画布上画出各种炫酷的图形和画面,但是这些画面都是禁止的,怎么样才能让他们动起来呢? 如何绘制基本图形可以参考:canvas基本图形绘制 如何对基本图形移动旋转缩放可以参考:canvas图形变换 如何设置基本图形颜色和样式可以参考:canvas样式和颜色 如何使用外部图片以及图形组合可以参考:canvas使用图片,图形组合以及裁剪 canvas如何保存和加载图像可以参考:canvas图像保存 canvas系列教程可以参考:canvas 动画的基本步骤 我们

【OneAPM】极客编程挑战#023:使用HTML5画布生成渐变自由落体小球效果

本期挑战 给定如下HTML: <canvas id="gbcanvas" width="350" height="300"></canvas> 阅读如下的相关HTML5画布教程: HTML5画布实现的粒子运动效果 HTML5画布Canvas基础入门 请使用HTML5画布生成一个自由落体效果的渐变小球,效果如下(点击下图查看GIF动画) 渐变色由#dd4814开始, 由#FFFF66结束 提交方式: 录制代码编写过程或最终代

洛谷——P1033 自由落体

P1033 自由落体 题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公式为 d=1/2*g*(t^2),其中 g=10,t 为下落时间.地面上的小车以速度 V 前进. 如下图: 小车与所有小球同时开始运动,当小球距小车的距离 <= 0.0001(感谢Silver_N修正) 时,即认为小球被小车接受(小球落到地面后不能被接受). 请你计算出小车能接受到多少个小球. 输入

小tips:用java模拟小球做抛物线运动

这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我调试了很久,上网也找了很多资料,但是没有那种适合我们小白的教程,于是我简单讲讲我的思路.我将从如何画一个小球开始到一步步实现小球进行抛物线运动.嘿嘿!! 一.任务分解 现在我们来做抛物线运动的小球,先不急写代码,先来想象一下做好的结果是什么样子的.我将这个任务分成三步,第一步,画一个小球:第二步,该

ObjectAnimator之PropertyValuesHolder与Keyframe----实现电话响铃震动和小球自由抛体效果

首先需要实现的俩种效果图 1.实现电话响铃震动效果 2.小球自由抛体效果 一.PropertyValuesHolder 1.概述 PropertyValuesHolder这个类的意义就是,它其中保存了动画过程中所需要操作的属性和对应的值.我们通过ofFloat(Object target, String propertyName, float- values)构造的动画,ofFloat()的内部实现其实就是将传进来的参数封装成PropertyValuesHolder实例来保存动画状态.在封装成P

JS运动-自由落体运动

模拟物理中的自由落体运动:废话不多说,先看效果!! 图片效果不太好,有些卡,可以把代码考出来自己运行看下效果!! 基本过程:鼠标可拖拽div,当鼠标抬起的时候,div会自由下落,然后弹起下落,直到速度为0运动停止,下落和弹起直至停止的过程是模拟 自由落体运动 完成测试代码: <div id="box"></div> <style> #box{ position: absolute;left: 0;top: 0; width: 100px;height

洛谷P1033 自由落体

P1033 自由落体 题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公式为 d=1/2*g*(t^2),其中 g=10,t 为下落时间.地面上的小车以速度 V 前进. 如下图: 小车与所有小球同时开始运动,当小球距小车的距离 <= 0.0001(感谢Silver_N修正) 时,即认为小球被小车接受(小球落到地面后不能被接受). 请你计算出小车能接受到多少个小球. 输入