Thread View: cn.bbs.comp.lang.visual-basic
1 messages
1 total messages
Started by kk
Mon, 16 Feb 2009 13:06
���������ֵ��������ע��
Author: 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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads