垂直的算法

本文介绍了一个使用VBScript实现鼠标操作绘制动态变化线条的应用案例。通过跟踪鼠标移动来更新线条的位置和方向,该程序展示了如何根据鼠标的当前位置调整线条的长度和角度。此应用适用于初学者了解基本的编程概念及图形操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工程中先引用控件 Line1,Line2

Dim ux As Integer
Dim uy As Integer

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ux = X
    uy = Y
    Line1.X1 = X
   
    Line1.X2 = X
  
    Line1.Y1 = Y - 300
    Line1.Y2 = Y + 300
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'x的坐标为 sqr(a^2 * ((y2-y1)^2/((y2-y1)^2+(x2-x1)^2)))+x1

    If Button = 1 Then
        Me.Cls
        Line (ux, uy)-(X, Y)
       
        If X < ux Then
        Line1.X1 = ux + Sqr(300 ^ 2 * ((Y - uy) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        Else
        Line1.X1 = ux - Sqr(300 ^ 2 * ((Y - uy) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        End If
       
        If Y > uy Then
        Line1.Y1 = uy + Sqr(300 ^ 2 * ((X - ux) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        Else
        Line1.Y1 = uy - Sqr(300 ^ 2 * ((X - ux) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        End If
       
        'Line1.X1 = ux + 300 * Cos(Atn((X - ux) / (uy - Y)))
        'Line1.Y1 = uy + 300 * Sin(Atn(X - ux) / (uy - Y))
        If X > ux Then
        Line1.X2 = ux + Sqr(300 ^ 2 * ((Y - uy) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        Else
        Line1.X2 = ux - Sqr(300 ^ 2 * ((Y - uy) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        End If
       
        If Y < uy Then
        Line1.Y2 = uy + Sqr(300 ^ 2 * ((X - ux) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        Else
        Line1.Y2 = uy - Sqr(300 ^ 2 * ((X - ux) ^ 2 / ((Y - uy) ^ 2 + (X - ux) ^ 2)))
        End If
       
        Line2.X1 = Line1.X1 + X - ux
        Line2.Y1 = Line1.Y1 + Y - uy
       
        Line2.X2 = Line1.X2 + X - ux
        Line2.Y2 = Line1.Y2 + Y - uy
    End If
End Sub


### 序列模式挖掘中的垂直算法 #### GSP算法概述 GSP(Generalized Sequential Patterns)算法是一种经典的序列模式挖掘算法,它引入了垂直列表数据库和哈希树的概念来改进传统的Apriori算法。该算法通过连接步和剪枝步完成计算过程,在处理大规模数据集时表现出一定的优势[^3]。 #### FP-Growth算法特点 不同于基于水平格式的传统方法,FP-Growth采用了垂直数据格式表示法。具体来说,就是按照一定顺序整理原始交易记录里的项目,并依据这些项目的频次建立一棵称为“频繁模式树”的特殊结构。在此过程中,为了提高效率并节省资源消耗,还会对这棵树实施压缩操作——即删除不必要的节点以及简化路径关系,以此达到降低内存占用量的目的同时加快运算速度[^4]。 #### SPADE算法简介及其优化方向 尽管像SPAED这样的技术已经能够很好地解决许多实际应用领域内的问题,然而仍然存在一些局限之处有待改善。例如,当面对海量输入源时可能会因为反复遍历整个集合而导致较高的时间开销;另外一方面则是由于中间结果过多而引起的额外存储需求增加等问题。因此出现了诸如FreeSpan、PrefixSpan之类的新型解决方案试图克服上述挑战[^5]。 ```python def build_vertical_format(transactions): """ 将事务转换成垂直格式 参数: transactions (list of list): 输入的事务列表 返回: dict: 键为项, 值为包含该项的所有事务ID组成的集合 """ vertical_db = {} for tid, transaction in enumerate(transactions): for item in set(transaction): if item not in vertical_db: vertical_db[item] = set() vertical_db[item].add(tid) return vertical_db def compress_tree(fptree): """压缩FPTree""" pass # 这里省略具体的实现细节 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值