彩票分析软件里的旋转矩阵是如何做的?谁能提供一个算法及VB源代码?

解决方案 »

  1.   


    '看这个是不是你想要的,另一次给另一个发了,到现在都不给结贴,郁闷.
    '地址:http://topic.csdn.net/u/20080710/09/5d6dea66-02b1-4f9f-9d7d-6b65638ed1ac.html
    Private Enum Way
      curLeft = 1   '左转
      curRight = 2  '右转
    End Enum
    Private Enum Incept
       LeftTop = 1    '起始点左上角
       RightTop = 2   '起始点右上角
       LeftBottom = 3  '起始点左下角
       RightBottom = 4  '起始点右下角
    End Enum
    Private Function LoadData(Data() As String, BeginRow As Long, BeginColumn As Long, RowCount As Long, ColumnCount As Long, curWay As Way, curIncept As Incept, inceptIndex As Long, returnArr() As String)
       If BeginRow > RowCount Then Exit Function
       If BeginColumn > ColumnCount Then Exit Function
       If curWay = curLeft Then
          Select Case curIncept
             Case LeftTop
                 For i = BeginRow To RowCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
                 
                 For i = BeginColumn + 1 To ColumnCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
                 
                 For i = RowCount - 1 To BeginRow Step -1
                    If RowCount - 1 = BeginRow Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
                 
                 For i = ColumnCount - 1 To BeginColumn + 1 Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginColumn, i)
                 Next
             Case RightTop
                 For i = ColumnCount To BeginColumn Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginColumn, i)
                 Next
                 For i = BeginRow + 1 To RowCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
                 
                 For i = BeginColumn + 1 To ColumnCount
                    If BeginColumn + 1 = ColumnCount Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
                 
                 For i = RowCount - 1 To BeginRow + 1 Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
             Case LeftBottom
                 For i = BeginColumn To ColumnCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
                 
                 For i = RowCount - 1 To BeginRow Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
                 
                 For i = ColumnCount - 1 To BeginColumn Step -1
                    If ColumnCount - 1 = BeginColumn Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginColumn, i)
                 Next
           
                 For i = BeginRow + 1 To RowCount - 1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
             Case RightBottom
                 For i = RowCount To BeginRow Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
                 
                 For i = ColumnCount - 1 To BeginColumn Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginColumn, i)
                 Next
           
                 For i = BeginRow + 1 To RowCount
                    If BeginRow + 1 = RowCount Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
                 
                 For i = BeginColumn + 1 To ColumnCount - 1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
         End Select
       Else
          Select Case curIncept
             Case LeftTop
                 For i = BeginColumn To ColumnCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginRow, i)
                 Next
             
                 For i = BeginRow + 1 To RowCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
                 
                 For i = ColumnCount - 1 To BeginColumn Step -1
                    If ColumnCount - 1 = BeginColumn Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
                 
                 For i = RowCount - 1 To BeginRow + 1 Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
                 
             Case RightTop
                 For i = BeginRow To RowCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
                 
                 For i = ColumnCount - 1 To BeginColumn Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
                 
                 For i = RowCount - 1 To BeginRow Step -1
                    If RowCount - 1 = BeginRow Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
           
                 For i = BeginColumn + 1 To ColumnCount - 1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginRow, i)
                 Next
             Case LeftBottom
                 For i = RowCount To BeginRow Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
           
                 For i = BeginColumn + 1 To ColumnCount
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginRow, i)
                 Next
           
                For i = BeginRow + 1 To RowCount
                    If BeginRow + 1 = RowCount Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
                 
                 For i = ColumnCount - 1 To BeginColumn + 1 Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
             Case RightBottom
                    For i = ColumnCount To BeginColumn Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(RowCount, i)
                 Next
                 
                 For i = RowCount - 1 To BeginRow Step -1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, BeginRow)
                 Next
           
                 For i = BeginColumn + 1 To ColumnCount
                    If BeginColumn + 1 = ColumnCount Then Exit Function
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(BeginRow, i)
                 Next
           
                For i = BeginRow + 1 To RowCount - 1
                    inceptIndex = inceptIndex + 1
                    returnArr(inceptIndex) = Data(i, ColumnCount)
                 Next
       
         End Select
       End If
       LoadData Data, BeginRow + 1, BeginColumn + 1, RowCount - 1, ColumnCount - 1, curWay, curIncept, inceptIndex, returnArr
    End Function