我需要定义一个过程来实现一个算法:我有n个点(n=1,2,3,.......),想编一个算法来确定每个点的X,Y坐标。
关于X,Y坐标应遵循以下原则:
1.这n个点按左右两列排列;
2.这n个点以中心坐标(0,0)对称排列;
3.位于左列的点的X坐标为-25;
4.位于右列的点的X坐标为+25;
5.相邻两行点的Y坐标间隔30;
6.如果点的个数n是奇数,中间一行点的Y坐标为0;如果是偶数,一定是上下两行点的Y坐标分别偏离Y的中心坐标+15、-15排列。寻求VB的算法,最好封装成一个函数来实现。

解决方案 »

  1.   

    我需要定义一个过程来实现一个算法:我有n个点(n=1,2,3,.......),想编一个算法来确定每个点的X,Y坐标。
    关于X,Y坐标应遵循以下原则:
    1.这n个点按左右两列排列;
    2.这n个点以中心坐标(0,0)对称排列;
    3.位于左列的点的X坐标为-25;
    4.位于右列的点的X坐标为+25;
    5.相邻两行点的Y坐标间隔30;
    6.如果点的个数n是奇数,中间一行点的Y坐标为0;如果是偶数,一定是中心点上下两行点的Y坐标分别偏离Y的中心坐标+15、-15排列。寻求VB的算法,最好封装成一个函数来实现。
      

  2.   

    6.如果点的个数n是奇数,中间一行点的Y坐标为0;如果是偶数,一定是中心点上下两行点的Y坐标分别偏离Y的中心坐标+15、-15排列。
      

  3.   

    ·.ScaleMode=3
    ·设整个字符区的左上角坐标为(0,0)
    ·按两列N行排列,使用.TextWidth和TextHeight方法计算出每个字符串将要占据的矩形大小
    ·计算得到左列和右列的最大宽度,加上预留的中间间隔(比如32个像素宽),得到总宽度。
    ·总高度=(每行高度+预留行间隔)*总行数-预留行间隔,(比如预留行间隔4个像素高)
    ·最后将所有X坐标减去‘总宽度/2’,所有Y坐标减去‘总高度/2’即为所求
      

  4.   

    不需要显示。
    '求关于中心点0,0对称的函数
    Public Sub XY_ZuoBiao(ByVal n As Integer, ByRef a() As Integer)
        ReDim a(n, 2)
        
    End Sub
      

  5.   

    不清楚你示例中的n是什么值,以下示例是你要输出数组的最大下标....Private Sub Command1_Click()
        Dim n As Integer
        Dim a() As Integer
        
        n = 4
        Call XY_ZuoBiao(n, a)
        
        Dim i As Integer, j As Integer
        For i = 0 To UBound(a, 1)
            For j = 0 To UBound(a, 2)
                Debug.Print a(i, j),
            Next
            Debug.Print
        Next
        
    End SubPublic Sub XY_ZuoBiao(ByVal n As Integer, ByRef a() As Integer)
        Dim Row As Integer
        Dim Idx As Integer
        Dim tmpY As Integer
        Dim i As Integer
        
        Const X1 = -25: Const X2 = 25
        Const Y = 30
        
        Row = Abs(Fix(-n / 2))
        ReDim a(n, 2)
        tmpY = Row * Y / 2
        For i = 0 To Row
            a(Idx, 0) = Idx: a(Idx, 1) = X1: a(Idx, 2) = tmpY
            If Idx + 1 <= n Then
                a(Idx + 1, 0) = Idx + 1: a(Idx + 1, 1) = X2: a(Idx + 1, 2) = tmpY
            End If
            Idx = Idx + 2
            tmpY = tmpY - Y
        Next
        
    End Sub
    只是一个思路,没有严格测试....
      

  6.   

    不知道你为什么要ReDim a(n, 2)
    a(n, 0)不知道你要存储什么,我的示例是放了下标,感觉没意义。直接ReDim a(n, 1),这样a(n, 0)放x,
    这样a(n, 1)放y即可....
      

  7.   

    不需要显示。
    '求关于中心点0,0对称的函数
    Public Sub XY_ZuoBiao(ByVal n As Integer, ByRef a() As Integer)
    '参数n为点个数,参数a()为要求的XY坐标组成的数组
      ReDim a(n, 2)
      。’正在编写,还未实现,敬请期待   
    End Sub