栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux触摸屏动效

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux触摸屏动效

触摸拖尾特效 实现原理

参考cocos2d中MotionStreak拖尾特效的实现。MotionStreak 的拖尾效果,原理实际上是:触摸手指在移动的过程中,会动态生成一段段条带段(如图),然后这些条带段会在生命周期Fade秒内,渐渐隐去(慢慢变透明),从而形成了拖尾的效果。

条带使用的是OpenGL中三角形条带。条带上的关键点并不是触摸点,而是相邻触摸坐标线段的垂直平分线上距离线段中点距离为[条带宽度/2]的点,坐标计算方式如下:

触摸相邻点的线段的倾斜角α已知,L为 条带的宽度,那么三角形条带相对于线段中点的 ( x m , y m ) (x_m,y_m) (xm​,ym​) 偏移量 d x , d y dx,dy dx,dy为
d x = L ∗ cos ⁡ β 2 , d y = L ∗ sin ⁡ β 2 ,   α + β = Π 4 dx=frac{Lastcos{beta}}{2}, dy=frac{Lastsin{beta}}{2}, alpha+beta=frac{mathrm{Pi}}{4} dx=2L∗cosβ​,dy=2L∗sinβ​, α+β=4Π​
至此,条带上的所有关键点可以计算得出。条带上内侧的关键点放到顶点数组的奇数位置,外侧的关键点放到顶点数组的偶数位置,最后将顶点数组按照OpenGL中三角形条带(GL_TRIANGLE_STRIP)的方式依次连接,便可得到三角形条带,最后将纹理(如下图)和颜色混合后映射到条带上,便可得到触摸拖尾特效。

效果

触摸点击、长按特效 实现原理

触摸点击的效果是点击位置出现一个圆,手指离开后圆半径逐渐缩小,直至消失。触摸长按的效果是长按位置出现圆环,手指离开后圆环消失。两个动画根本上是进行圆环的绘制,圆其实就是个内径为零的圆环。但在OpenGL中基本图元中并不包含圆,需要用三角形去拟合。圆环的绘制是采用OpenGL的三角形条带进行绘制,难点在顶点数组的计算,如下图:

建模后:已知当前的坐标 ( x , y ) (x,y) (x,y),偏移角度 α α α, 圆心 ( c x , c y ) (cx,cy) (cx,cy),圆半径为 r r r, 我们需要推导出 ( x ′ , y ′ ) (xprime,yprime) (x′,y′),做辅助角 β β β,以圆心为坐标原点建系,则有
x = r c o s ( α + β ) ; x ′ = r c o s β ; y = r s i n ( α + β ) ; y ′ = r s i n β x=rcos(α+β);x'=rcosβ;y=rsin(α+β);y'=rsinβ x=rcos(α+β);x′=rcosβ;y=rsin(α+β);y′=rsinβ
最终可推导出:
x ′ = x c o s α − y s i n α ; y ′ = x s i n α + y c o s α x'=xcosα - ysinα;y'=xsinα+ycosα x′=xcosα−ysinα;y′=xsinα+ycosα
假设我们用一个N多边形去拟合圆,则有:
α =   2 Π N alpha= frac{2mathrm{Pi}}{N} α= N2Π​
至此,圆环上的所有的关键点可以推导得出。然后,将圆环内侧的关键点放入顶点数组的奇数位置,外侧的关键点放到顶点数组的偶数位置,通过OpenGL中的三角形条带(GL_TRIANGLE_STRIP)的方式,进行绘制,便可得到圆环,然后将圆环的纹理贴合上去,最后,通过QAnimation做成渐变的效果。至此,点击、长按动画便大功告成。

效果

    触摸点击动效

    触摸长按动效

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728138.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号