快捷搜索:

拉一个小球

日期:2019-10-24编辑作者:二战前线

一直以来都对物理效果有神秘感,完全不知道怎么实现的.直到看到了周银辉在老早前写的一篇博客: 终于知道是怎么实现的了.

CompositionTarget类的Rendering事件.在每一帧成功渲染时触发.这样就能在极短的时间内对对象进行更细致的操作,以达到预期效果.

然而博客里并没有介绍得出结果公式的过程,导致我真的一头雾水了,所以决定重新写一下,分享给感兴趣的人.

先上效果图:

图片 1

大概是这么个场景,一个橡皮筋拉着一个小球在一个充满介质的空间里运动,橡皮筋越长,拉力就越大,介质可以是空气,水,油等任何液体或气体物质,取决于他们的粘性系数.

公式

牛顿的公式

大家都很熟悉了:(可能吧,反正我是不熟悉,这都是我百度查的)

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

本文由澳门新普京发布于二战前线,转载请注明出处:拉一个小球

关键词:

化作天使守护你

“上课了上课了上课了,下午是那个更年期的课,迟到了又该说……”舍友不停喊着。 一种是羡慕和遗憾,一种是幸...

详细>>

Swift

Swift iOS : 字体Logo 嫌恶了应用位图在xcode的Assets.xcassets内,因为劳动,包罗如下的麻烦:找图 图需求分尺寸 要求操作...

详细>>

微信红包的成功之处

微信红包这一成效,对于全体微信来讲至关心器重要。即使微信已经推出了微信钱袋和转账等作用,但使用者寥寥—...

详细>>

干货分享

流程名:   离职申请     流程相关文书:   流程包.xml  WebService业务服务.xml  WebService.asmx  WebService.cs     流程说...

详细>>