阻尼运动算法在界面编程中的应用

【洞幺邦】单自由度弹簧阻尼系统 已知质量m=10kg,弹簧系数k=1000N/m,阻尼c=40N•s/m。且质量块的初始位移x(0)=0.02m,其初始速度x´(0)=0m/s。 阻尼是用来衡量系统自身消耗振动能量能力的物理量,在运动过程中,阻尼器的阻尼力总是与弹簧块的运动方向相反,如下式所示: (2.1) 其中, 为阻尼器的阻尼系数,数值为40N.s/m; 为弹簧块运动位移的导数。 弹簧受到外作用时,在线性范围内,弹簧力的大小与弹簧的形变成正比,弹簧力的方向总是与形变方向相反。弹簧提供的热力如下所示: 阅读详情

最近一直在考虑如何设计系统的启动封面,关键在于封面上众多的按钮无法很好的分类组织起来。后来在魔兽中得到了启示。
        其实最简约的设计最具持久美感,所以放弃了Panel、Tab容器的设计,而是参考War3的界面,按功能分成大类,当点击每个大类按钮时,对应的子功能按钮会像War3的侧边栏一样弹出,效果还是比较炫的。
       
         具体效果见War3的侧边栏吧,简单描述就是左边的两排按钮会从上面弹下来,就像皮球落地一样。下面讲一下具体实现。
         从初中物理知识中我们可以了解到这种运动属于阻尼运动,而皮球落地可以用取绝对值的阻尼运动公式来描述,程序中为了运动美观而没有取绝对值。
         阻尼运动又分为欠阻尼、过阻尼及临界阻尼,概念就不多说了,有兴趣自己看,在后面的代码分析中将会看到按钮运动是欠阻尼。
        阻尼运动公式:x(t) = A * exp(-1 * β * t) * cos(sprt(ω^2 - β^2 * t) + φ) , β是阻尼因子,ω是固有角频率。通过调整这两个参数的值即可获得我们预想的运动形式。
        下面列举出代码部分,语言为C#。
        

         int             fixY_1  =   224 ,                fixY_2  =   280 ,                fixY_3  =   336 ;
        
double     A_1  =   170 ,                    A_2  =   170 ,                    A_3  =   170 ;    
        
double     LocalY_1,                    LocalY_2,                    LocalY_3;
        
double     w_1  =   5 ,                        w_2  =   3 ,                        w_3  =   1 ;
        
double     B_1  =   0.4 ,                    B_2  =   0.3 ,                    B_3  =   0.5 ;
            
double     t_1  =   0 ,                         t_2  =   0 ,                        t_3  =   0 ;
            
double  LocalY_temp  =   0 ;
            
while ( true )
            
{    
                LocalY_1 
=  A_1  *  Math.Exp(  - 1   *  B_1  *  t_1)  *  Math.Cos(Math.Sqrt(w_1  *  t_1));    
                LocalY_2 
=  A_2  *  Math.Exp(  - 1   *  B_2  *  t_2)  *  Math.Cos(Math.Sqrt(w_2  *  t_2));    
                LocalY_3 
=  A_3  *  Math.Exp(  - 1   *  B_3  *  t_3)  *  Math.Cos(Math.Sqrt(w_3  *  t_3));    

                t_1 
=  t_1  +   0.5 ;
                t_2 
=  t_1;
                t_3 
=  t_1;
                                             
                bttn_LIV.Location 
=    new  Point( 160 , fixY_1  -  Convert.ToInt16(LocalY_1));    
                bttn_VBR.Location 
=   new  Point( 320 , fixY_1  -  Convert.ToInt16(LocalY_1));    
                bttn_OSA.Location 
=    new  Point( 160 , fixY_2  -  Convert.ToInt16(LocalY_2));    
                bttn_Sens.Location 
=    new  Point( 320 , fixY_2  -  Convert.ToInt16(LocalY_2));    
                bttn_BR.Location 
=      new  Point( 160 , fixY_3  -  Convert.ToInt16(LocalY_3));    
                bttn_Respon.Location 
=   new  Point( 320 , fixY_3  -  Convert.ToInt16(LocalY_3));    
                Application.DoEvents();        
       
                
if (LocalY_temp  ==  LocalY_1)
                    
break ;
                
else
                    LocalY_temp 
=  LocalY_1;
            }

    


         So easy,呵呵,上述程序中的大循环即完成了预期的效果。fix_Y 1-3定义了三行按钮停止后的Location.Y值,A_1 ~ A-3定义了三行按钮开始运动时的Location.Y值,w_1 ~ w_3,B_1 ~ B_3分别是固有角频率和阻尼因子,这六个值是关键值,分别决定了三行按钮的下落运动轨迹。这六个值需要根据情况进行调整,是整个程序比较耗时的部分。
        程序的整体思路是每循环一次,时间参数t_1~t_3增加,然后计算按钮的Location.Y值,改变按钮位置,直到两次循环按钮位置不再发生变化位 置。时间参数决定了运动的细腻程度,这个可以参考奈奎斯特定理,但由于CPU的运算周期一定,所以过小的时间步长会导致按钮运动过慢,这样又需要调整w和 β参数来改善运动速度,这三个变量互相影响,需要按实际情况进行调整。
        另外在程序运行时更改控件位置需要开启双缓冲,在.NET中这步操作非常简单,在窗体构造函数中加入:

             this .SetStyle(ControlStyles.UserPaint  |  ControlStyles.DoubleBuffer  |  ControlStyles.AllPaintingInWmPaint   |  ControlStyles.ResizeRedraw  |  ControlStyles.SupportsTransparentBackColor,  true );
            
this .UpdateStyles();


         关于双缓冲的内容就不介绍了。
         如果各位同学还有什么更好的算法欢迎讨论。

动画系统里的临界阻尼与MotionModel 玩家的输入,怎么转换成人物模型的速度、转向速度、加速度等参数怎么理解Damping这个变量什么是阻尼、临界阻尼与过阻尼,什么是阻尼系数什么是惯性化插值如何根据带阻尼的弹簧运动模型,转换成对应的用于插值的Damper代码?如何理解Motion Matching代码里面Daniel Holden写的Damper函数。 阅读详情

相关推荐

electron windows设置镜像地址环境变量报错npm error `ELECTRON_MIRROR` is not a valid npm option

如果你是在使用某个特定的脚本或配置文件,请检查该文件中是否有不正确的配置项,并进行相应的修正。确保你遵循electron的官方安装指南,并且没有包含不必要的或错误的配置选项。如果问题依然存在,可以查看npm的官方文档或者相关社区获取更多帮助。

qq_36158551的博客 3322

温度滞回程序C语言,间隙式粘滞阻尼器温度变化对滞回性能影响的研究

A study on hysteretic behavior of clearance viscous damper influenced by temperaturePENG Lingyun1彭凌云(1976-),男,副研究员、硕导,主要研究方向:工程抗震与减振LI Yi1李毅(1993-),女,主要研究方向:工程抗震与减振LI Yongmei11、Beijing University of T...

weixin_35059431的博客 387

RTKlib操作手册--使用样例数据演示

本文将使用样例数据演示如何使用RTKLIB进行rtk差分定位。

samur2的博客 7776

C语言中实现边沿函数算法及应用,这是抛弃PLC留下的痛!

很多从事PLC编程的朋友都知道,不管是什么品牌的PLC,都有上升沿和下降沿指令。❤那么什么情况下我们才会使用或必须使用边沿信号呢?边沿信号我们又如何获取呢?如图1,任何一个开关信号(或数字...

轻松学C语言 3485

PINN——加入物理约束的神经网络

【摘要】 基于物理信息的神经网络(Physics-informed Neural Network, 简称PINN),是一类用于解决有监督学习任务的神经网络,它不仅能够像传统神经网络一样学习到训练数据样本的分布规律,而且能够学习到数学方程描述的物理定律。与纯数据驱动的神经网络学习相比,PINN在训练过程中施加了物理信息约束,因而能用更少的数据样本学习到更具泛化能力的模型。本文主要解析这种神经网络以...

qq_39444290的博客 4583

MacBook 本地化部署 Dify 指南

dify 怎么安装部署 有哪些坑 !

weixin_44542598的博客 1522

阻尼函数及实现

文章目录对数衰减方法阻尼振荡python实现C++实现 对数衰减方法阻尼振荡 阻尼(damping)是指摇荡系统或振动系统受到阻滞使能量随时间而耗散的物理现象 阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减的振动,又称减幅振动、衰减振动。 不论是弹簧振子还是单摆由于外界的摩擦和介质阻力总是存在,在振动过程中要不断克服外界阻力做功,消耗能量,振幅就会逐渐减小,经过一段时间,振动就会完全停下来。这种振幅随时间减小的振动称为阻尼振动. 阻尼有助于减小机槭结构的共振振幅,从而避免结

sinat_37842336的博客 6433

R语言实战:5分钟搞定NHANES数据库的加权分析与可视化(附完整代码)

本文提供了一份R语言实战指南,帮助研究者在5分钟内完成NHANES数据库的加权分析与可视化。通过详细的代码示例,涵盖数据获取、清洗、加权分析和可视化全流程,特别适合公共卫生和流行病学研究者快速掌握复杂抽样数据的处理方法。

www00的博客 253

模拟阻尼运动

游戏里面经常有转盘活动, 为了让转盘表现自然一点, 就需要自己模拟阻尼运动, 分为三个过程: 匀加速运动, 匀速运动, 匀减速运动 设定最高速度为MaxSpeed, SpeedUp1(匀加速运动的加速度), SpeedUp2(匀减速运动的加速度), Expect(期望停留的弧度点) 其实模拟只需要把两个加运动的区间模拟出来, 剩下的就是匀速运动的区间.   1 public ...

weixin_33953384的博客 406

使用pytorch构建LSTM_AE模型的两种方式

2.基本LSTM_Unit计算——基本LSTM_AE结构 3.自定义LSTM_Unit计算——自定义LSTM_AE结构 1.LSTM-Encoder-Decoder模型结构及简要解析 图基本lstm计算单元

qq_37840762的博客 7273

一款值得关注的开源企业管理ERP系统

盒木ERP是一款开源的现代化企业管理系统,采用前后端分离架构,后端基于Python+Django,前端使用Vue+Ant Design。系统涵盖采购、销售、库存、财务等核心业务模块,支持移动端操作和PDA扫码。具有开源免费、技术先进、功能完善等特点,适合中小企业使用或二次开发。项目提供详细部署指南,支持Docker容器化部署,是学习ERP系统开发和企业数字化转型的优秀选择。

1105

C语言程序设计简谐运动的模拟,C语言课程设计简谐振动实验的模拟.doc

C语言课程设计简谐振动实验的模拟《C语言程序设计》课程设计报告题 目简谐振动实验的模拟姓 名 学 号 同组人员 学 号 年级专业09电子信息工程(2)班指导教师 完成日期2010年6月13日目 录一、问题描述二、基本要求三、系统分析和过程四、流程图五、源程序代码六、小结及收获体会七、参考文献八、评定意见一:问题描述本程序设计是一个将物理问题与C语言程序设计结合的程序设计问题。能够实现用...

weixin_42301769的博客 1603

【YOLO目标检测全栈实战】98 YOLO模型在低光照环境下的自适应增强策略

你有没有遇到过这种情况?深夜加班调试产线检测模型,车间灯光昏暗,摄像头采集的图片黑乎乎一片,YOLO模型直接“罢工”——漏检率飙升到40%以上。上个月我在一个汽车零部件质检项目里就栽了跟头:白天模型跑得飞起,mAP@0.5达到0.92,可一到夜班,同样的产线、同样的零件,mAP直接掉到0.63。客户拍着桌子问我:“你这模型怎么还分白天黑夜?”

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 284

Abaqus之动力分析中的阻尼的设置

以下内容主要参考 -带你了解ABAQUS中如何定义各种阻尼,但有修改部分内容和细节。 1. 阻尼的含义 系统结构特征值和模态的求解是在无阻尼情况下得到的,而在动力学问题中,任意结构都应存在或大或小的阻尼,阻尼的大小将会对系统动力学响应产生一定的影响。 当系统作无阻尼自由振动时,由于没有能量输入与输出,系统机械能守恒,系统的振幅为常数。然而在实际结构中,这种无阻尼自由振动并不存在。结构运动时能量耗散,振幅将逐渐减小直至停止振动,这种能量耗散被称为阻尼(damping)。能量耗散来源于几个因素,其中包括.

wanjiac的博客 6万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

“阻尼、阻尼系数、阻尼比”

概念生活比喻物理意义数学表达特点阻尼关门缓冲器、汽车减震消耗能量、抑制运动的现象F = -c v一种效应或过程阻尼系数 (c)缓冲器的“调节旋钮”衡量阻尼作用强弱的物理参数c(在F = -c v中)有单位 (N·s/m),是绝对值阻尼比 (ζ)门关上是“晃着关”、“快速关”还是“爬着关”实际阻尼与临界阻尼的比值,描述运动状态无量纲,是相对值,用于系统动态响应分析。

良好的开始一般都会感到困难。 9328

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

阻尼衰减曲线用python_简谐运动之阻尼振动

续上一期的文章,我们今天接着来撸一撸带阻尼的简谐振子(damped oscillator)。我们假设振子在运动过程中受到的阻力仅与它的运动速度有关,并且阻力的大小简单的正比于速度的大小,即 ,这里 是一个描述阻力强弱的参数。结合简谐振子原本就受到的和位移成正比的回复力,我们可以写下阻尼振动的运动方程:注意这里的两个负号:第一个负号是因为回复力的方向和位移相反,第二个负号是因为阻力的作用方向和运动...

weixin_39987313的博客 2895

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

单自由度有阻尼自由振动:运动方程求解与Simulink实现

1. 介绍单自由度有阻尼自由振动; 2. 基于二阶常系数齐次线性微分方程求解振动; 3. 介绍无阻尼、过阻尼、临界阻尼、欠阻尼振动的区别; 4. 使用仿真软件Simulink绘制上述振动的位移曲线。

MichaelJiangJunC的博客 2801

结构反应中的阻尼与在ansys中的定义

阻尼存在于所有的振动结构体系中,是消耗体系振动能量,从而使得振动结构的反应分析减小,但结构的阻尼非常复杂,本文就常用的阻尼的类型,模型以及ansys中阻尼的类型和应用进行简单的介绍,仅供参考,有错误的话希望大家批评指正。ansys软件中有瑞丽阻尼,材料阻尼,常阻尼比,模态阻尼,单元阻尼,材料常阻尼系数,材料结构阻尼系数这七种阻尼。目前常用的阻尼模型主要有:粘性阻尼,滞变阻尼,以及库伦摩擦阻尼三种,以不同阻尼表示的单自由度体系的运动方程为例子说明。模态阻尼用于对不同的振动模态定义不同的阻尼比,即阵型阻尼。

zzkll123的博客 7256

【电磁阻尼】在重力和电磁阻尼力作用下物体的运动【含Matlab源码 13140期】

在重力和电磁阻尼力作用下物体的运动 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 843

阻尼

阻尼 阻尼(damping)是指任何振动系统在振动中由于外界作用或系统本身固有的原因引起的振动幅度逐渐下降的特性,以及此特性的量化表征。在电学中,是响应时间的意思。 阻尼(damping)的物理意义是力的衰减或物体在运动中的能量耗散。通俗地讲,就是阻止物体继续运动。当物体受到外力作用而振动时,会产生一种使外力衰减的反力,称为阻尼力(或减振力)。它和作用力的比被称为阻尼系数。通常阻尼力的方向总是...

《好好先生》专栏 1万+

关于阻尼振动

把上面三张图画在一起可以得到下图:其中,蓝色的是包络线x±A0e−βtx±A0​e−βt,红色的是欠阻尼情况下的x−tx-tx−t图象,橙色的是过阻尼情况下的x−tx-tx−t图象,紫色的是临界阻尼情况下的x−tx-tx−t图象。在系统只改变β\betaβ的情况下,发现临界阻尼情况下弹簧振子最快回到平衡状态。实际上,可以统一3(3)3的解的形式为xe−βtftxe−βtft.临界阻尼情况下的ft。

wr114514的博客 3320

阻尼衰减曲线用python_瑞利阻尼的应用

来源:筑信达微信公众号(ID:CISEC68924600),作者:筑信达 吴文博。瑞利 (Rayleigh)阻尼假设结构的阻尼矩阵是质量矩阵和刚度矩阵的组合,因其简单、方便,而在结构动力分析中得到了广泛应用。在SAP2000或ETABS的时程分析中,用户可以在直接积分法或FNA法中使用瑞利阻尼。本文简单介绍瑞利阻尼的原理,并通过案例分析使用瑞利阻尼时常见的误区。瑞利阻尼的基本原理就时...

weixin_39771614的博客 2037

微分方程(有阻尼的简谐运动)

微分方程 通过某些变量的变化率来求出原始函数的表达式 变化率比较好表达 例如 例如自由落体,物体始终受重力,加速度为ggg y¨(t)=−gy˙(t)=−gt+v0y(t)=−(1/2)gt2+v0t+y0 \begin{array}{c} \ddot{y}(t)=-g \quad \dot{y}(t)=-g t+v_{0} \\ y(t)=-(1 / 2) g t^{2}+v_{0} t+y_{0} \end{array} y¨​(t)=−gy˙​(t)=−gt+v0​y(t)=−(1/2)gt2+v

losangeles666的博客 7474

理论分享 | 认识阻尼:理解常见阻尼模型的区别与联系

阻尼是表征结构能量耗散的关键动力学特性,对振动系统的动态响应预测与控制具有重要意义。本文系统阐述了阻尼的基本概念与作用机理,重点分析了三种典型阻尼模型:粘性阻尼(与速度成正比)、结构阻尼(与振幅成正比)、库伦阻尼(摩擦阻尼)。在工程应用中,通常采用等效数学模型(如模态阻尼、瑞利阻尼)来近似模拟复杂阻尼行为,而非直接建模物理机理。研究表明,通过引入阻尼比这一无量纲参数,可以消除系统规模影响,实现不同结构阻尼特性的标准化比较。文章还揭示了结构阻尼与粘性阻尼在共振频率处的等效关系,为工程阻尼建模提供了理论依据。

SCXSYBZ的博客 1646
上一篇: c#GDI+绘图速度的一些差异不理解
下一篇: 天气预报查询
dadahacker
博客等级 码龄20年 78粉丝 120原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值