| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2721 人关注过本帖
标题:VB 向Excel指定规律的X,Y坐标。
只看楼主 加入收藏
紫金山
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2017-6-20
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
VB 向Excel指定规律的X,Y坐标。
小白初接触VB,很多东西还是不是很明白。。
现在我希望输出一系列X,Y的数据。规律如下
i=0 to (Int(1000/32))
X0=0,X1=32,X2=-32……  Xi=32*(i+1)/2,Xi+1=-Xi。(i为奇数)
j = 0 To Int(1000 / (16 * 3 ^ 0.5))
Y0=0,Y1=32*sin(60),Y2=-Y1……Yj=32*sin(60)*(j+1)/2,Yj+1=-Yj(j为奇数)

if Sqr(Xi^2+Yj^2)<=450
输出Xi,Yj到Excel,
Else
不输出
并统计当X=Xi时,符合条件Yj的数量到新的数组aj

感觉应该是用for next语句,,捣鼓半天没有捣鼓成功,所以请大神帮忙。
下面是我的代码,请大家帮忙指点

Dim X(Int(1000 / 32)) As Long
Dim Y(Int(1000 / (16 * 3 ^ 0.5)))

Private Sub Command1_Click()
Dim i As Long
For i = 0 To Int(1000 / 32)
X(0) = 0
If i Mod 2 = 1 Then
X(i) = 32 * (i + 1) / 2
Else
X(i) = -32 * i / 2
End If
Next i

Dim j As Long
For j = 0 To Int(1000 / (16 * 3 ^ 0.5))
Y(0) = 0
If j Mod 2 = 1 Then
Y(j) = 16 * 3 ^ 0.5 * (j + 1) / 2
Else
Y(j) = 16 * 3 ^ 0.5 * j / 2
End If
Next j

If Sqr(X(i) ^ 2 + Y(j) ^ 2) < 450 Then
Text1.Text = Text1.Text + CStr(X(i)) + "," + CStr(Y(j)) + "; "
End If


End Sub


[此贴子已经被作者于2017-6-20 23:33编辑过]

搜索更多相关主题的帖子: 统计 Excel 
2017-06-20 21:40
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
条件有点没看懂

for  i = 1 to  int(10000 / 32) step 2
为啥要除 32 ?应该是多少组坐标。
你Y的循环,为啥还要乘 sin(60)?sin(60) 应该是计算坐标时才用,而不应该放在确定坐标组上
step 每次循环需要处理二组坐标,所以 循环步长要为 2 。
x1 =32 * (i+1)/2
y1 = .......  照你的抄
x2= -x1
y2 = -y2

这就生成二组坐标
然后根据值去判断 和 处理。

手机上写的,凑和着看吧

授人于鱼,不如授人于渔
早已停用QQ了
2017-06-20 23:49
紫金山
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2017-6-20
收藏
得分:0 
可能我没说清楚,,我要输出图示的所有圆的X,Y坐标。。。我的逻辑好像还不对。。
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-06-21 10:13
紫金山
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2017-6-20
收藏
得分:0 
回复 2楼 风吹过b
图片附件: 游客没有浏览图片的权限,请 登录注册

可能我表达的有问题,,我的目的就是输出图示中所有圆的圆心坐标。。所有的圆必须坐落在限定直径的圆内,大于就不输出。
2017-06-21 10:17
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
窗体拉大一点,放一个按钮 Command1

程序代码:
Option Explicit

Const bl = 15               '绘图比例。默认单位是缇,1像素=15缇
Const xr = 14                '内小圆半径,影响边界是否有小圆
Const jz = 32               '间隔
Const Dr = 484 / 2          '大外半径
Const PI = 3.1415926
Const jj = 60 / 180 * PI    '60度折算为弦度


Private Sub Command1_Click()

Dim x0 As Long, y0 As Long      '原点
Dim x1 As Long, y1 As Long      '坐标1
Dim x2 As Long, y2 As Long      '坐标2

Dim i As Long                   'X轴循环变量
Dim o As Long                   'Y轴最大高度
Dim j As Long                   'Y轴计数
Dim k As Long                   '到圆心的距离

Me.Cls                          '清屏,为绘图作准备

x0 = Me.ScaleWidth / 2          '计算原点,屏幕中心
y0 = Me.ScaleHeight / 2

Me.Line (0, y0)-(Me.ScaleWidth, y0), vbRed         'X轴
Me.Line (x0, 0)-(x0, Me.ScaleHeight), vbRed        'Y轴
Me.Circle (x0, y0), Dr * bl, vbBlue

'For i = 0 To 192 Step 55                   '绘制X轴平行线,间隔 55 ,32*sin(60)*2
'
'    Me.Line (0, y0 + i * bl)-(Me.ScaleWidth, y0 + i * bl)
'    Me.Line (0, y0 - i * bl)-(Me.ScaleWidth, y0 - i * bl)
'Next i
'
'For i = 0 To 192 Step 32                   '绘制Y轴平行线,间隔 32
'    Me.Line (x0 + i * bl, 0)-(x0 + i * bl, Me.ScaleHeight)
'    Me.Line (x0 - i * bl, 0)-(x0 - i * bl, Me.ScaleHeight)
'
'Next i

For i = 0 To Int(Dr / jz * 2)               'X轴上可以排列多少个

    x1 = i * jz / 2                             '坐标X1
    x2 = -x1
    
    o = Int(Sqr((Dr) * (Dr) - (x1 * x1)))      'Y轴最大高度
    j = 0
    Do
        y1 = (i Mod 2) * jz * Sin(jj) + j * 2 * jz * Sin(jj)    '计算Y坐标
        k = Sqr(x1 * x1 + y1 * y1) + xr                         '计算与原点的距离
        If k < Dr Then                                          '在圆内
            y2 = -y1
            Me.Circle (x1 * bl + x0, y1 * bl + y0), xr * bl     '绘4个象限中的圆
            Me.Circle (x1 * bl + x0, y2 * bl + y0), xr * bl
            Me.Circle (x2 * bl + x0, y1 * bl + y0), xr * bl
            Me.Circle (x2 * bl + x0, y2 * bl + y0), xr * bl
           j = j + 1
        Else
            Exit Do
        End If
    Loop

Next i
End Sub


目前就是没有把圆心的连线起来。需要输出坐标后才能输出。
数据计算中, 32*sin(60) = 27.712812921102036696439141464094  ,约等于 28,
             32*sin(60)*2 = 55.425625842204073392878282928188  ,约等于 55 。

我没写输出坐标的部分,这部分你应该会的。我用了这个坐标进行绘图了
---------------------
你犯的问题
1、弦度与度的关系
2、二个循环应该是嵌套的
3、算法
4、应该要绘图才能看得出结果是否正确,你没这个部分

收到的鲜花
  • xiangyue05102017-06-21 17:18 送鲜花  20朵   附言:牛人就是牛人,这么块代码就出来了。赞

授人于鱼,不如授人于渔
早已停用QQ了
2017-06-21 11:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

授人于鱼,不如授人于渔
早已停用QQ了
2017-06-21 11:50
快速回复:VB 向Excel指定规律的X,Y坐标。
数据加载中...
 
   



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

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