无锡电脑维修
             设为主页               加入收藏
 
                   
首页     |     最新资讯     |     数据恢复     |     组装电脑     |     监控安装     |     家庭影院     |     服务价格     |     企业IT外包     |      配件及周边产品      |     关于我们
无锡电脑维修
  客服电话: 051066727520
  维修地址:清扬路30号
  客服QQ: 82190600
  客服邮箱: 82190600@qq.com
     
最新资讯
06-26
06-26
06-26
06-26
06-26
06-26
06-26
06-26
06-26
06-26
06-26
06-26
06-19
06-19
06-19
合作伙伴

无锡电脑维修

无锡电脑维修
无锡电脑维修
无锡电脑维修
无锡电脑维修
无锡电脑维修
无锡电脑维修
无锡电脑维修
 

最新资讯

偏移的程度与水波的斜率有最直接的关系, 水面越倾斜

时间:2013-06-19 00:58来源:未知 作者:admin 点击:

区域采样是计算机图形学中常用
的方法,仅仅考虑一片小区域的影
响,可以在保证效率的前提下得到相
当不错的效果。把一个池塘水面看成一
个二维的坐标系,(x, y)坐标的值将受它周围区域的坐标影响,
最简单的,仅仅被(x+1,y)、(x-1,y)、(x,y+1)和(x,y-1)影响。
我们将基于这个假设推导计算水波振幅的公式。
记S(x,y)为(x,y)坐标的水波的振幅,记住振幅有正负
之分哦。基于上面的假设,(x,y)坐标水波下一时刻的振幅S'
(x,y)将由当前时刻的S(x,y)、S(x+1,y)、S(x-1,y)、S(x,
y+1)和S(x,y-1)来决定。说S(x+1,y)、S(x-1,y)、S(x,
y+1)和S(x,y-1)对S'(x,y)的影响力相同应该没有人会反对,
从而可以得到公式1:
S'(x,y) = a * [ S(x+1,y) + S(x-1,y) + S(x,y+1) +
S(x,y-1) ] + b * S(x,y)
a、b 为待定系数。下面我们来确定a 和b。首先假设
水的阻尼为0,也就是没有能量消耗。其次,计算机模拟
水波效果仅仅考虑某个瞬间的状态——计算机习惯处理离散
状态,换句话说,这里忽略掉瞬间状态时水波的动能,或
者想像成如果瞬间状态取得足够好,瞬间状态时动能总和为
0。在这种理想条件下,水的总势能保持不变,换句话说,
所有这些点的振幅的和保持不变。那么可以得到下面这个公
式:
S'(0,0) + S'(0,1) + S'(1,0) + ... S'(n,n) = S(0,0)
+ S(0,1) + S(1,0) + ... + S(n,n)
若n无穷大,用公式1代入上式便得到:
(4 * a + b) * S(0,0) + + ...(4 * a + b) * S(n,n)
= S(0,0) + ... + S(n,n)
任何满足上式的a和b都是解,而a = 1/2、b = -1
明显满足上式,而且1/2这样的除法可以用位运算来提高速
度,所以这是一组合适的解。最后得到的水波振幅计算公
式就是:
S'(x,y) = [ S(x+1,y) + S(x-1,y) + S(x,y+1) + S(x,
y-1) ] / 2 - S(x,y)
用这个近似公式就可以推导水波振幅的变化而模拟水波
的振荡了。公式的直观意义也很明显:水面上某一点下一时
刻的水波振幅等于与该点紧邻的上下左右四点的当前振幅之
和除以2 ,再减去该点当前的振
幅。
模拟水面光线追踪
因为水面存在折射与反射,当人的视角不与水面垂直
的时候,人眼看到的景物并不是在观察点的正下方,而存
在一定的偏移(见图2)。
近似地,所看到的水下景物偏移量就越大。所以,可
以近似地用水面上某点的上下以及左右两点的振幅之差来代
表所看到水底景物的偏移量。
模拟阻尼
永远振荡的水面并不漂亮,慢慢平静下来的水面似乎
更有诗意。所以,我们要给水波加上阻尼,让振幅越来越小
以至于平静。方法很简单,对振幅取一个百分比就可以了。
编程实现
为了演示算法的效果,我并没有采用DirectX——强大,
但是复杂得足够喧宾夺主。这里仅仅采用了直观的GDI函
数,放在线程中实现。如果你了解了算法,可以做相当的
优化。这里给一些提示:
1.要求速度的算法,特别是图像算法中,应该仅仅使
用加减以及位运算,尽最大可能杜绝乘法和除法,乘除法
消耗的CPU资源是加减以及位运算的几十倍。很多情况下位
运算能够替代乘法,比如乘256可以用shl 8代替(或者表
示为C语言中

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

©  2006 - 2011 无锡电脑维修   www.teacher3.com 保留所有权利. 
无锡电脑:欢迎您 无锡电脑:www.teacher3.com
维修地址:梦之岛25号 24小时保修热线:18626333120
邮箱地址:82190600@qq.com 客服 QQ :82190600