Article View: cn.bbs.comp.lang.visual-basic
Article #146���������ֵ��������ע��
From: kk
Date: Mon, 16 Feb 2009 13:06
Date: Mon, 16 Feb 2009 13:06
125 lines
6614 bytes
6614 bytes
һ�������Ȼ��
Sub tspLine(Num As Long, ByRef Plot_Create_X() As Double, ByRef Plot_Create_Y() As Double, Plot_Return_X() As Double, Plot_Return_Y() As Double, ByVal intJG As Double, ByVal k As Long, ByVal n As Integer, ByVal ch As Integer, ByVal tx1 As Single, ByVal tx2 As Single, ByVal ty1 As Single, ByVal ty2 As Single)
Dim a() As Single
Dim b() As Single
Dim c() As Single
Dim dx() As Single
Dim dy() As Single
Dim QX() As Single
Dim qy() As Single
Dim tt As Single
Dim bx3 As Single
Dim bx4 As Single
Dim by3 As Single
Dim by4 As Single
Dim cx As Single
Dim cy As Single
Dim t() As Single
Dim px() As Single
Dim py() As Single
Dim u(3) As Single
Dim v(3) As Single
Dim I As Integer
ReDim a(k)
ReDim b(k)
ReDim c(k)
ReDim dx(k)
ReDim dy(k)
ReDim QX(k)
ReDim qy(k)
ReDim t(k)
ReDim px(k)
ReDim py(k)
Num = 0
For I = 1 To n
t(I) = HYPOT(Plot_Create_X(I) - Plot_Create_X(I - 1), Plot_Create_Y(I) - Plot_Create_Y(I - 1))
If t(1) = 0 Then
t(1) = 0.01
End If
If t(I) = 0 Then
t(I) = t(I - 1)
End If
Next I
Select Case ch
Case 0 '��������
u(0) = (Plot_Create_X(1) - Plot_Create_X(0)) / t(1): u(1) = (Plot_Create_X(2) - Plot_Create_X(1)) / t(2)
u(2) = (u(1) - u(0)) / (t(2) + t(1))
tx1 = u(0) - u(2) * t(1)
u(0) = (Plot_Create_Y(1) - Plot_Create_Y(0)) / t(1): u(1) = (Plot_Create_Y(2) - Plot_Create_Y(1)) / t(2)
u(2) = (u(1) - u(0)) / (t(2) + t(1))
ty1 = u(0) - u(2) * t(1)
u(0) = (Plot_Create_X(n) - Plot_Create_X(n - 1)) / t(n): u(1) = (Plot_Create_X(n - 1) - Plot_Create_X(n - 2)) / t(n - 1)
u(2) = (u(0) - u(1)) / (t(n) + t(n - 1))
tx2 = u(0) + u(2) * t(n)
u(0) = (Plot_Create_Y(n) - Plot_Create_Y(n - 1)) / t(n): u(1) = (Plot_Create_Y(n - 1) - Plot_Create_Y(n - 2)) / t(n - 1)
u(2) = (u(0) - u(1)) / (t(n) + t(n - 1))
ty2 = u(0) + u(2) * t(n)
Case 1 '�����
a(0) = 1: c(0) = 0: dx(0) = tx1: dy(0) = ty1
a(n) = 1: b(n) = 0: dx(n) = tx2: dy(n) = ty2
Case 2 '��������
a(0) = 2: c(0) = 1
dx(0) = 3 * (Plot_Create_X(1) - Plot_Create_X(0)) / t(1): dy(0) = 3 * (Plot_Create_Y(1) - Plot_Create_Y(0)) / t(1)
a(n) = 2: b(n) = 1
dx(n) = 3 * (Plot_Create_X(n) - Plot_Create_X(n - 1)) / t(n): dy(n) = 3 * (Plot_Create_Y(n) - Plot_Create_Y(n - 1)) / t(n)
Case 3 'ѭ������
a(0) = 2: c(0) = 1
dx(0) = 3 * (Plot_Create_X(1) - Plot_Create_X(0)) / t(1) - (t(1) * (Plot_Create_X(2) - Plot_Create_X(1)) / t(2) - Plot_Create_X(1) + Plot_Create_X(0)) / (t(1) + t(2))
dy(0) = 3 * (Plot_Create_Y(1) - Plot_Create_Y(0)) / t(1) - (t(1) * (Plot_Create_Y(2) - Plot_Create_Y(1)) / t(2) - Plot_Create_Y(1) + Plot_Create_Y(0)) / (t(1) + t(2))
a(n) = 2: b(n) = 1
dx(n) = 3 * (Plot_Create_X(n) - Plot_Create_X(n - 1)) / t(n)
dx(n) = dx(n) + (Plot_Create_X(n) - Plot_Create_X(n - 1) - t(n) * (Plot_Create_X(n - 1) - Plot_Create_X(n - 2)) / t(n - 1)) / (t(n) + t(n - 1))
dy(n) = 3 * (Plot_Create_Y(n) - Plot_Create_Y(n - 1)) / t(n)
dy(n) = dy(n) + (Plot_Create_Y(n) - Plot_Create_Y(n - 1) - t(n) * (Plot_Create_Y(n - 1) - Plot_Create_Y(n - 2)) / t(n - 1)) / (t(n) + t(n - 1))
End Select
'���㷽����ϵ����ͳ�����
For I = 1 To n - 1
a(I) = 2 * (t(I) + t(I + 1)): b(I) = t(I + 1): c(I) = t(I)
dx(I) = 3 * (t(I) * (Plot_Create_X(I + 1) - Plot_Create_X(I)) / t(I + 1) + t(I + 1) * (Plot_Create_X(I) - Plot_Create_X(I - 1)) / t(I))
dy(I) = 3 * (t(I) * (Plot_Create_Y(I + 1) - Plot_Create_Y(I)) / t(I + 1) + t(I + 1) * (Plot_Create_Y(I) - Plot_Create_Y(I - 1)) / t(I))
Next I
'�����Ϸ��ⷽ����
c(0) = c(0) / a(0)
For I = 1 To n - 1
a(I) = a(I) - b(I) * c(I - 1): c(I) = c(I) / a(I)
Next I
a(n) = a(n) - b(n) * c(I - 1)
QX(0) = dx(0) / a(0): qy(0) = dy(0) / a(0)
For I = 1 To n
QX(I) = (dx(I) - b(I) * QX(I - 1)) / a(I)
qy(I) = (dy(I) - b(I) * qy(I - 1)) / a(I)
Next I
px(n) = QX(n): py(n) = qy(n)
For I = n - 1 To 0 Step -1
px(I) = QX(I) - c(I) * px(I + 1)
py(I) = qy(I) - c(I) * py(I + 1)
Next I
'���������ϵ�����
For I = 0 To n - 1
bx3 = (3 * (Plot_Create_X(I + 1) - Plot_Create_X(I)) / t(I + 1) - 2 * px(I) - px(I + 1)) / t(I + 1)
bx4 = ((2 * (Plot_Create_X(I) - Plot_Create_X(I + 1)) / t(I + 1) + px(I) + px(I + 1)) / t(I + 1)) / t(I + 1)
by3 = (3 * (Plot_Create_Y(I + 1) - Plot_Create_Y(I)) / t(I + 1) - 2 * py(I) - py(I + 1)) / t(I + 1)
by4 = ((2 * (Plot_Create_Y(I) - Plot_Create_Y(I + 1)) / t(I + 1) + py(I) + py(I + 1)) / t(I + 1)) / t(I + 1)
tt = 0
While (tt <= t(I + 1))
cx = Plot_Create_X(I) + (px(I) + (bx3 + bx4 * tt) * tt) * tt
cy = Plot_Create_Y(I) + (py(I) + (by3 + by4 * tt) * tt) * tt
ReDim Preserve Plot_Return_X(Num)
ReDim Preserve Plot_Return_Y(Num)
Plot_Return_X(Num) = cx: Plot_Return_Y(Num) = cy: Num = Num + 1: tt = tt + intJG
Wend
ReDim Preserve Plot_Return_X(Num)
ReDim Preserve Plot_Return_Y(Num)
Plot_Return_X(Num) = Plot_Create_X(I + 1): Plot_Return_Y(Num) = Plot_Create_Y(I + 1): Num = Num + 1
Next I
End Sub
--
[m[35m�� ��Դ:��BBS ˮľ�廪վ http://smth.edu.cn��[FROM: 58.19.228.*][m
Technical Details
Message-ID:
<4eTClM$4HQ@bbs.tsinghua.edu.cn>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder.news-service.com!news.isoc.lu!news.shec6.edu.cn!news.byr.edu.cn!SMTHShow Full Headers
Complete Article Headers
X-Google-Thread: 109fdd,64b6f19f41ba968b,start X-Google-Attributes: gid109fdd,domainid0,public,usenet X-Google-Language: ENGLISH,GB Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!feeder.news-service.com!news.isoc.lu!news.shec6.edu.cn!news.byr.edu.cn!SMTH From: kk1985@smth.edu.cn-SPAM.no (kk) Newsgroups: cn.bbs.comp.lang.visual-basic Subject: ���������ֵ��������ע�� Date: 16 Feb 2009 13:06:47 GMT Organization: BBS ˮľ�廪վ Message-ID: <4eTClM$4HQ@bbs.tsinghua.edu.cn> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit X-Filename: VisualBasic/r/M.1234789606.80