🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: cn.bbs.comp.lang.visual-basic
1 messages
1 total messages Started by kk Mon, 16 Feb 2009 13:06
���������ֵ��������ע��
#146
Author: kk
Date: Mon, 16 Feb 2009 13:06
125 lines
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
--

�� ��Դ:��BBS ˮľ�廪վ http://smth.edu.cn��[FROM: 58.19.228.*]
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