明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1398|回复: 1

用插补的方法把"B样条曲线"进行插补输出到雕刻机进行刻绘?

[复制链接]
发表于 2005-1-7 09:14:00 | 显示全部楼层 |阅读模式
小弟在做AutoCAD的图形输出。
我现在需要用插补的方法把"B样条曲线"进行插补输出到雕刻机进行刻绘。现在遇到困难。
我的算法如下:
Dim n As Integer '样条曲线控制点数
Dim u(5), v(5) As Double 'x,y坐标

Private Sub Command3_Click()
Picture1.Scale (0, 0)-(800, 600)
u(0) = 57: v(0) = Picture1.ScaleHeight - 83
u(1) = 190: v(1) = Picture1.ScaleHeight - 442
u(2) = 259: v(2) = Picture1.ScaleHeight - 5
u(3) = 461: v(3) = Picture1.ScaleHeight - 505
u(4) = 449: v(4) = Picture1.ScaleHeight - 123
n = 5

b_spLine n

End Sub

Private Sub b_spLine(n As Integer)
Dim i, j, k As Integer
Dim b(4, 10), x(10), y(10) As Double
num = 10
For i = 1 To 10
t = i / num
b(0, i) = (1 - t) * (1 - t) * (1 - t) / 6
b(1, i) = (t - 2) * t * t / 2 + 2 / 3
b(2, i) = (1 + t - t * t) * t / 2 + 1 / 6
b(3, i) = t * t * t / 6
Next i
For i = 1 To n
x(i) = u(i - 1): y(i) = v(i - 1)
Next i

x(0) = 2 * x(1) - x(2): y(0) = 2 * y(1) - y(2)
x(n + 1) = 2 * x(n) - x(n - 1): y(n + 1) = 2 * y(n) - y(n - 1)
Picture1.PSet (x(1), y(1))
For i = 0 To n - 2
For j = 1 To 10
xe = 0: ye = 0
For k = 0 To 3
xe = xe + b(k, j) * x(i + k): ye = ye + b(k, j) * y(i + k)
Next k
Picture1.Line -(xe, ye)
Next j
Next i
End Sub

该算法是利用AUTOCAD的DXF文件中的控制点数据进行插补的,可是画出的图形与AUTOCAD中的图形不完全相同。望有经验的帮帮我,万分着急!
发表于 2005-1-8 19:38:00 | 显示全部楼层
Dim u(5), v(5) As Double 'x,y坐标
vb里这样定义好象是有问题的吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 21:04 , Processed in 0.164670 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表