首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

水波模拟算法

一、理论依据 水波的物理学模型便是理论依据。水波有如下特性: 扩散:水波总是从被扰动的中心向外扩散。在水波扩散过程中每个点都在得到能量后以自己为中心震动,并向四周传播能量。...约束条件 描述 实时渲染 由于该算法要实时渲染水波,所以只能近似推导,而且不能使用三角函数、除法等低效运算,以保证速度。 三、设计方案 用两个数组来模拟水池。数组大小:水池高度 * 水池宽度。...即x0’ = (x1 + x2 + … + y4) /6 – x0 然后有 x0’ = x0 – x0 * 阻尼因子 考虑折射: 要进行精确的计算不现实,因为当前的设计方案无法模拟真正的折射。...现在进行线性逼近模拟就可以了。水面越倾斜,折射越厉害,即水下的景物看上去偏移越厉害。所以,用谋点的前后两点的波幅差作为该点的折射偏移量。...考虑波源: 为了比较逼真的模拟波源,考虑水面受到扰动的时候并不是一个点上受到了扰动,而是在一个比较小的范围内受到了扰动。

1.2K90

图像水波特效

:/Users/xpp/Desktop/Lena.png') rows,cols=img.shape[:2] dst=np.zeros((rows,cols,3),dtype="uint8") #定义水波特效参数...wavelength=20 amplitude=30 phase=math.pi/4 #获取中心点 centreX=0.5 centreY=0.5 radius=min(rows,cols)/2 #设置水波覆盖面积...icentreX=cols*centreX icentreY=rows*centreY #图像水波特效 for i in range(rows): for j in range(cols):...cv2.imshow('original',img) cv2.imshow('result',dst) cv2.waitKey() cv2.destroyAllWindows() 算法:图像水波特效是围绕水波中心点进行波纹涟漪传递...如图,红轴表示水面,蓝色椭圆表示水波。 对于某个点x,其运动轨迹上的每个点都可以分解为与视线平行和垂直的2个方向上的位移,计算出垂直视线的位移y,即计算出水波导致像素点偏移位移。

39330
您找到你想要的搜索结果了吗?
是的
没有找到

水波扩散效果(shader)

水波扩散是一个比较好看的交互效果,特别是在某些以水为故事发生场景的游戏中,扩散的水波会让场景更加栩栩如生 ?...demo 实现思路 如果水波静止,我们看到的其实是像素点围绕着某个中心点的拉伸效果,我们只需让每个像素点叠加上它和中心点的向量差,就能够呈现出画面上的所有像素围绕中心点的拉伸感。...周期性往外涌 这种呼吸灯式的涌动其实和我们的最终效果有很大区别,因为它永远在循环涌动,但是我们的水波是从中心扩散出去之后,中间部分就不再动了的,怎么让中间的像素不再多次涌动呢?...如果把一圈水波比作圆,那水波的扩散行为其实就是这个圆的半径在不断的增大,圆外面的波纹有效,圆里面的波纹静止。...未调优效果 接下来的就是参数的调试,主要是三角函数的采样那里,我们希望水波能够产生多个波动,所以我们需要乘上一定的倍数,让函数的作用范围足够大,才能有足够多的波峰谷底。

2.2K20

Android开发笔记(一百三十一)水波图形与水波动画

水波图形RippleDrawable RippleDrawable是Android在5.0之后新增的图形类,它的作用是在点击时展示水波动画,从而提示用户在这里按压了屏幕。...具体的水波样式主要有三种,说明如下: 1、没有边界限制的水波,这意味着允许水波动画充满整个视图,xml定义如下: <ripple xmlns:android="http://schemas.android.com...<em>水波</em>动画RippleView RippleDrawable只支持Android5.0以后的系统,如果想在4.*系统上也能展示<em>水波</em>动画效果,就得自己编写<em>水波</em>动画的控件了。...<em>水波</em>动画的实现思路不难,主要是以触摸点为圆心,间隔很短时间不停地向外画圆圈,从而产生<em>水波</em>荡漾的动画效果。...; 4、随着<em>水波</em>扩散与消失,<em>水波</em>图案的颜色应当逐渐变淡,这样才符合现实生活中的情况; 5、对于按钮等控件,点击操作应延迟若干时长(如0.5秒)再处理具体事务,以便留出充裕时间播放<em>水波</em>动画; 下面是自定义<em>水波</em>动画的截图

97140

模拟实现 new 操作符(js)

js 不是基于 class 这种静态类模式,而是基于原型对象的模式。 所以,在 js 中,new 操作符,其实可以通俗的理解成一个辅助工具,用来辅助函数构造出一个新对象。...所以,我们才能够来模拟实现它,因为它其实通俗理解,就是一个工具函数。 得先明确这点,才能知道,的确是可以模拟 new 操作符的。...以上这种场景的 new 操作符其实就是做了几件事: 创建一个继承自 A.prototype 的空对象 让空对象作为函数 A 的上下文,并调用 A 返回这个空对象 这是基本的 new 使用的场景,那么我们要来模拟实现的话...new 操作符的所有职责或者说所有使用场景覆盖了: 用户定义的对象类型 ==> 当构造函数有返回值时 具有构造函数的内置对象 ==> 当前函数可用来作为构造函数,那么返回内部创建的新对象 所以,要完整模拟一个...没错,从引擎角度来看,的确是这样处理,但这些内部属性我们并没有办法看到的啊,那对于我们这些写 js 的来说,如何判断一个函数是否能够作为构造函数呢?靠经验积累?

3.5K10

Node.js股票模拟交易后台

我曾经花了一周时间开发了一个股票模拟交易后台程序,使用Node.js。代码量很少,能完成基本功能。下面给大家介绍一下其实现步骤。...模拟交易采用更简单的即时成交机制,只要符合条件,订单立即成交。 这个后台程序一共就两个js文件,一个用于处理成交,即判断成交条件,写数据库。另一个处理其他逻辑。...这个后台程序以一个node.js进程的方式运行,一个10秒一次的定时器执行成交判断。(真实交易所的撮合器也是10秒钟一次) 此外有一个WebAPI Server接受来自客户端的请求。...佣金字段用于模拟交易的手续费和税费。可用资金字段是,当用户挂单的时候有一部分资金处于冻结状态,可用资金就是去除冻结资金的金额。...额外津贴记录表(记录除权,除息) 资金记录表(记录特殊资金变动) 仓位表 - 仓位记录表(记录仓位变化) 做空仓位记录表 排行榜 挂单 挂单的核心就是向数据库插入一条记录,不过即便是简洁的js

2.8K30

Android 5.0 实现水波扩散效果

本文实例为大家分享了Android 5.0 实现水波扩散效果的具体代码,供大家参考,具体内容如下 该效果是通过自定义界面来实现的 1、首先自定义属性,attrs.xml代码如下: <?...2、自定义RippleView类继承RelativeLayout布局,也可以由需求所定继承于其它类,实现水波扩散效果主要的有两点:水波扩散的绘制和动画 1)水波的绘制其实就是绘制一个圆形 canvas.drawCircle...private float mMaskAlpha;// 遮掩透明度 private float mRippleAlpha;// 水波透明度 private int mRippleTime;// 水波动画时间...private ObjectAnimator mRippleAnim;// 显示水波动画 private float mRadius;// 当前的半径 private float mMaxRadius...;// 水波最大半径 private float mDownX; // 记录手指按下的位置 private float mDownY; private boolean mIsMask; private

68020
领券