| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6295 人关注过本帖, 3 人收藏
标题:★如何将座次表旋转180度?
只看楼主 加入收藏
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:170
专家分:175
注 册:2009-8-20
收藏
得分:0 
回复 20楼 aaaaaa
除夕了,呵呵。新年快乐,继续努力!
2016-02-07 17:45
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
谢谢鼓励,我将继续努力。

目前矩阵转置写好了:
Function Matrix_Transpose(A1, R1)
    * 矩阵转置/对称矩阵 : 左上角-右下角翻转
    * 定义:如果A(I, J)=A(J, I),则 A 是对称矩阵.

Function Matrix_TransposeA(A1, R1)
    * 矩阵逆转置 : 右上角-左下角翻转
    * 定义:如果A(I, J)=A(J, I),则 A 是对称矩阵.

矩阵旋转做了一部分:
Function Matrix_Rotation_CW90(A1, R1)
    * 数组顺时针旋转90度
    * 算法:
    * 第一步:A(I, J) = A(J, I),即先转置
    * 第二步:A(I, J) = A(I, nColY - J),再列逆向(对调)

Function Matrix_Rotation_CCW90(A1, R1)
    * 数组逆时针旋转90度
    * 算法:
    * 第一步:A(I, J) = A(J, I),即先转置
    * 第二步:A(I, J) = A(nColX - I, J),再行逆向(对调)

Function Matrix_Rotation_CW180(A1, R1)
    * 数组顺时针旋转180度
    * 算法:A(I, J) = A(nColX - I, nRowY - J),先行-行逆向,后列-列逆向(对调)

Function Matrix_Rotation_CCW180(A1, R1)
    * 数组逆时针旋转-180度
    * 算法:A(I, J) = A(nColX - I, nRowY - J),先列-列逆向,后行-行逆向(对调)

下面的旋转还正在写:
Function Matrix_Rotation_CW_Unit(A1, R1)
    * 数组正交同心圆顺时针旋转一单位
    * 条件:nXm, n = m, A1(n, n)
    * 算法:
    *     I -> 1 to n and J = 1
    *     J -> 1 to n and I = n
    *     I -> n to 1 and J = n
    *     J -> n to 1 and I = 1

Function Matrix_Rotation_CW_45(A1, R1)
    * 数组顺时针旋转45度

Function Matrix_Rotation_CCW_45(A1, R1)
    * 数组逆时针旋转45度

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-02-07 18:21
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
这样子的 45 度旋转好像有难度,做了一天了,没没有思路。

原始数组:
A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y

CCW 45 度后的数组:
    E   
   D J   
  C I O  
 B H N T
A G M S Y
 F L R X
  K Q W  
   P V   
    U  

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-02-10 21:58
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
Clear
Local gaArray[ 5, 5 ]
Dimension gaArray[5, 5]
? "原始数组 = 5x5 矩阵 : "  && Original Matrix
=Matrix_Fill(@gaArray)
=Matrix_Show(@gaArray)

? "数组顺(逆)时针旋转 45 度(菱形矩阵) : "  && 45 degrees CW/CCW
Local R1[ 1 ]  && 任意大于 0 的数
=Matrix_Rotation_45(@gaArray, @R1, .F.)  && 第三个参数表示旋转方向:.T.(缺省值) = 顺时针旋转45度(CW),
=Matrix_Show(@R1)


Function Matrix_Fill(A1)
    * 数组赋值(自然数) - Fill array with element numbers
    Local nRow, nCol

    For nRow = 1 To Alen( A1, 1 )
        For nCol = 1 To Alen( A1, 2 )
            A1[ nRow, nCol ] = Chr(64 + (nRow-1) * Alen( A1, 2 ) + nCol)  && 字母 : A-Z
            * A1[ nRow, nCol ] = (nRow-1) * Alen( A1, 2 ) + nCol          && 数字 : 1-N
        Endfor
    Endfor
    Return
Endfunc


Function Matrix_Show(A1)
    * 数组显示 - Display array data
    Local nRow, nCol, nRowX, nColY
    nRowX = Alen(A1, 1)
    nColY = Alen(A1, 2)

    For nRow = 1 To nRowX
        ?
        For nCol = 1 To nColY
            ?? A1[ nRow, nCol ], " "
        Endfor
    Endfor
    Return
Endfunc


Function Matrix_Rotation_45(A1, R1, CW)
    * 数组顺(逆)时针旋转 45 度(菱形矩阵)
    * 算法 : R(x + y - 1, nSizeA - x + y) = A(x, y)
    * 条件 : 必须 x=y,即长度=宽度的正方形矩阵

    Local nRow, nCol
    CW = Iif(Parameters() < 3, .T., CW)  && .T. = 顺时针,.F. = 逆时针
    nSizeA = Alen(A1, 1)    && 原始矩阵长(宽)度
    nSizeR = 2*Alen(A1, 1)  && 转换后的矩阵长(宽)度
    Dimension R1(nSizeR, nSizeR)
    For nRow = 1 To nSizeR
        For nCol = 1 To nSizeR
            R1(nRow, nCol) = " "
        Endfor
    Endfor

    For nRow = 1 To nSizeR
        For nCol = 1 To nSizeR
            If nRow <= nSizeA And nCol <= nSizeA
                If CW  && 顺时针
                    R1(nRow + nCol - 1, nSizeA - nRow + nCol) = A1(nRow, nCol)
                Else && 逆时针,坐标对应对换
                    R1(nSizeA - nRow + nCol, nRow + nCol - 1) = A1(nCol, nRow)
                Endif
            Endif
        Endfor
    Endfor

Endfunc

*!*    =======================================
*!*     原始 5x5 数组:
*!*     A B C D E
*!*     F G H I J
*!*     K L M N O
*!*     P Q R S T
*!*     U V W X Y

*!*     CCW 45 度后的菱形数组:
*!*         E
*!*        D J
*!*       C I O
*!*      B H N T
*!*     A G M S Y
*!*      F L R X
*!*       K Q W
*!*        P V
*!*         U
*!*    =======================================


民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-02-11 17:23
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
继续研究矩阵课题。

做了有数十个算法功能的有理数矩阵计算器,现在遇到问题,复数矩阵不会做了,比如:

    |2 1-i 1|
C = |1 1+i 2|
    |3 3+i 4|

如何分解实数部和虚数部,以及如何参加其运算?

图片附件: 游客没有浏览图片的权限,请 登录注册

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-02-21 20:27
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用aaaaaa在2016-2-21 20:27:16的发言:

继续研究矩阵课题。

做了有数十个算法功能的有理数矩阵计算器,现在遇到问题,复数矩阵不会做了,比如:

    |2 1-i 1|
C = |1 1+i 2|
    |3 3+i 4|

如何分解实数部和虚数部,以及如何参加其运算?

佩服!兴趣精力不减当年。
2016-02-21 21:24
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
我理解为复数矩阵相当于是一个父矩阵中的一个子矩阵,和有理数的运算法则是一样的,问题是分解实数部和虚数部用代码实现一下子还没有思路。
可能要从 3D 数组上考虑。

明天再说吧。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-02-21 21:50
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
6a钻研好精神高水平

只求每天有一丁点儿的进步就可以了
2016-02-22 07:52
快速回复:★如何将座次表旋转180度?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030068 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved