WPF实现物理效果 拉一个小球
一直以来都对物理效果有神秘感,完全不知道怎么实现的.直到看到了周银辉在老早前写的一篇博客:http://www.cnblogs.com/zhouyinhui/archive/2007/06/23/793724.html 终于知道是怎么实现的了.
CompositionTarget类的Rendering事件.在每一帧成功渲染时触发.这样就能在极短的时间内对对象进行更细致的操作,以达到预期效果.
然而博客里并没有介绍得出结果公式的过程,导致我真的一头雾水了,所以决定重新写一下,分享给感兴趣的人.
先上效果图:
大概是这么个场景,一个橡皮筋拉着一个小球在一个充满介质的空间里运动,橡皮筋越长,拉力就越大,介质可以是空气,水,油等任何液体或气体物质,取决于他们的粘性系数.
公式
牛顿的公式
大家都很熟悉了:(可能吧,反正我是不熟悉,这都是我百度查的)
a=(v2-v1)/t
F=F拉-F阻=ma
s=vt+1/2at^2
其中a是加速度,v是速度,t是时间,F是受到的力,s是移动的距离
球体质量公式
m=4/3 * π * r^3 * ρ
其中m是质量,r是球半径,ρ是密度
粘滞阻力
没学过这种高级的物理,完全不知道,也是在百度查的
在理论力学中所说的"与物体速度一次方成正比的阻力"指的就是粘滞阻力 在空气中运动速度不十分快的物体 受到的阻力主要是粘滞阻力
斯托克斯公式 球形物体 F=6πηvr=3πηvd η为流体的粘性系数 r为球形物体的半径 d为球形物体的直径
公式都有了,需要做的就是找出在上次帧渲染和这次帧渲染这段时间在拉力和阻力的作用下的移动距离.
作用力和速度都看成是X轴和Y轴两个方向的.
这里取的是把wpf里一个单位的距离,就看成是1牛顿的力.粘性系数和球的密度作为参数设置.有了这些,就可以根据公式推导出移动距离.(过程略...就是套公式...源码里有注释...最后会附上源码)
然后,好不容易推出来了,运行程序发现小球不动.才发现我犯了个大错误,就是力和质量差的太悬殊,打个比方就像一个人拿橡皮筋去拉迪拜塔,肯定是拉不动.
所以我加了个系数小球直径的三次方在里面,打个比方大概可以理解成,拉的东西多大,我的力气就多大,跟被拉的东西大小无关.我去拉迪拜塔的时候,我已经和迪拜塔一样高了.
附上源码:拉小球物理效果.zip
WPF实现物理效果 拉一个小球相关推荐
- 【企业数字化转型】数据可视化技术:Three.js 用Physijs在场景中添加物理效果
Three.js 极简教程 简介 Three.JS 是什么 Three.JS是基于WebGL的Javascript开源框架,简言之,就是能够实现3D效果的JS库. Three.JS 能做什么 利用Th ...
- unity 2020 怎么写shader使其接受光照?_用Unity实现半条命Alyx中的液体物理效果
干了两个月客户端的活终于能闲下来几天,有点空写个玩具了. 前段时间被半条命Alyx里的酒瓶刷屏了,这酒瓶里液体的的物理效果仅仅看录屏都能感受到十分棒,同时据说瓶子中液体的逻辑全部在shader的一个单 ...
- Unity 物理效果插件OBI使用记录,包含OBI-Rope绳索,OBI-Fluid,OBI-Cloth
做项目过程中需要用到一些物理效果,最终找到了OBI物理插架系列,在这里做一个使用记录. 一.OBI-Rope绳索插件(版本3.2) Rope插件提供了很强大的绳子物理模拟效果,具体的案例可以参考插件里 ...
- WPF 实现水纹效果
WPF 实现水纹效果 原文:WPF 实现水纹效果 鼠标滑过产生水纹,效果图如下: XMAL就放置了一个img标签 后台主要代码 窗体加载: private void Window_Loaded(obj ...
- iOS传感器:使用陀螺仪完成一个小球撞壁的小游戏
上一次借着实现一个随屏幕旋转的小玩意,了解了iPhone内置的加速计.今天咱们继续搞点好玩的东东.按照计划这次要看看陀螺仪了. 最终咱们会完成一个小球撞壁的小游戏,一个超级贱的利用陀螺仪的APP.小球 ...
- 如何用纯 CSS 创作一个小球上台阶的动画
如何用纯 CSS 创作一个小球上台阶的动画 效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/come ...
- unity水上小船晃动物理效果
小船晃动的一个效果,代码也是之前在csdn上面找到的, // 绕Z轴的摇摆的速度float z_Speed = 3.0f;// 绕X轴的摇摆的速度float x_Speed = 1.0f;void S ...
- WPF滚动条自动下拉实现
WPF滚动条自动下拉实现 WPF虽然很灵活,但是很多控件功能都需要自己实现. 例如通常软件UI的运行记录,不管用TextBox或者ListBox,还是其他,自动下拉到最后一条的功能都要自己去实现 假设 ...
- 用纯 CSS 创作一个小球反弹的动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OwWROO 可交互视频 ...
最新文章
- sklearn构建stacking模型进行堆叠多模型分层级回归分析
- Android 的Parcelable接口
- [搜索]一种分词方法的实现
- CUBA Platform 7.0.4 发布,企业级应用开发平台
- rea t插件 vscode_精选!15个必备的VSCode插件-Go语言中文社区
- 三十二、电子商务服务推荐模型构建
- 2.4.4 案例理解4种事务的隔离级别
- ffmpeg 将拆分的数据合成一帧_FFmpeg + OpenGLES 实现视频解码播放和视频滤镜
- python中的max_row_Openpyxl max_row和max_column错误地报告了一个较大的figu
- python四则运算_四则运算 python
- html5录音怎么保存到本地,详解HTML5 录音遇到的坑
- java native方法
- linux libstdc 怎样升级,linux 更新libstdc++.so.6
- Ceres Solver安装
- pytorch torchvision类
- LINUX编译GtkLP(开源的打印机图形化工具)
- java语法让反编译报错_java 反编译
- 银行转账和分布式事务(转)
- 北航机试 16逆序数
- 办公室多显示器共享主机解决方案