小流涓涓成江海,拙技点点构平台——OpenGL里画个带方向箭头的线段

我用OpenGL画个箭头基本思路是这样的:

1、确定起点和终点;

2、确定方向;

3、确定箭翼的长度;

4、画出箭头两侧;

带箭头的线就画好了。

lineto(origin,dst)

//



float signX = 1.0;
float signY = 1.0;/// X,Y轴向的符号标记
float deltX = dst.X - origin.X;
float deltY = dst.Y-origin.Y;

float cosalph = deltX/sqrt(deltX*deltX+deltY*deltY);//算一算旋转的角度

float sinalph = deltY/sqrt(deltX*deltX+deltY*deltY);


float x = cosalph*(-箭翼长度*signX);
float y = sinalph*(-箭翼长度*signY);


if(deltX>=0)
{
signX =-1.0;
}
if(deltY>=0)
{
signY =-1.0;
}
/// 画带箭头的直线
glLineWidth(1.0);
glColor3f(1.0,0,0);
glEnable(GL_LINE_SMOOTH);
glBegin(GL_LINES);
   glVertex2f(originX,originY);
glVertex2f(dstX,dstY);
glEnd();
glBegin(GL_LINE_STRIP);
   glVertex2f((x*cos(-0.5)- y*sin(0.5))+dstX,(x*sin(-0.5)+y*cos(-0.5))+dstY);    /\
   glVertex2f(dstX,dstY);                                                                                 / | \
    glVertex2f((x*cos(0.5)- y*sin(0.5))+dstX,(x*sin(0.5)+y*cos(0.5))+dstY);        |
glEnd();                                                                                                              |       
glDisable(GL_LINE_SMOOTH);

张开的角度实际是箭头两边的线相对于中间的线旋转的角度,实例中0.5是通过旋转角度计算得到的。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: CEEMDAN算法是一种基于经验模态分解(EMD)的信号分解方法,可以将非平稳和非线性信号分解一组称为本征模态函数(EMD)的固有模态函数。与传统的EMD方法不同,CEEMDAN通过加入随机噪声来提高EMD的稳定性和可重复性,使得分解结果更加准确和可靠。因此,CEEMDAN常用于信号处理、时频分析和模式识别等领域。 ### 回答2: Ceemdan是一种非线性多尺度分解算法。它是以经验模态分解(Empirical Mode Decomposition,EMD)为基础拓展而来的。EMD是一种将信号分解一系列固有模态函数(Intrinsic Mode Functions,IMF)的方法,每个IMF代表不同尺度的振动模式。然而,EMD存在固有的模态重叠和振荡模式不易分离等问题。 为了解决EMD的这些问题,Ceemdan引入了噪声辅助(Noise Assisted,NA)技术和小波变换(Wavelet Transform,WT)技术。首先,通过添加不同水平的噪声辅助,提高了模态间的独立性和局部特征的分离性。然后,对每个EMD分解得到的IMF应用小波变换,将原始信号的局部特征分解为不同频率分量,实现了多尺度分析。 Ceemdan算法的主要步骤包括:首先,将原始信号进行EMD分解得到一系列IMF;然后,通过添加噪声辅助提高IMF的独立性和特征分离性;接着,对每个IMF应用小波变换得到多尺度分量;最后,对分解得到的IMF和小波分量进行重得到原始信号。 Ceemdan算法具有较好的自适应性和鲁棒性,可以应用于信号处理、数据分析、图像处理等领域。它能够有效地分离信号的不同尺度特征,提取信号的局部信息,并能较好地处理非线性和非平稳信号。因此,Ceemdan算法在实际应用中具有重要的价值。 ### 回答3: Ceemdan(完整的离散多尺度集合经验模态分解算法)是一种用于信号处理和时间序列分析的算法。它是在经验模态分解(EMD)算法的基础上发展而来的。 EMD是一种将信号分解一系列本地特征模态函数(IMF)的方法。每个IMF都是通过在信号中提取振荡分量的过程生的。然而,EMD在实践中存在困难,例如模态混叠和模态涓涓细节问题。 为了解决这些问题,Ceemdan算法引入了多尺度分解的概念。它将信号分解多个不同的时间尺度,每个尺度都包含了信号的不同频率分。然后,在每个尺度上应用EMD算法,生对应的IMF系数。 Ceemdan算法通过重复多尺度分解和EMD过程,将信号进一步分解多个IMF系数。这些IMF系数可以提供多尺度的信号特征表达,使得信号的时间序列分析更加准确和全面。 Ceemdan算法的应用非常广泛。它可以用于信号处理领域,如图像处理、语音识别和振动分析。此外,它也可以用于气象预测、金融市场分析和生物医学工程等领域。 总之,Ceemdan算法是一种基于多尺度分解的经验模态分解算法,可以用于信号处理和时间序列分析,以提取信号的特征和进行相关的应用研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值