Решение задач в Excel на VBA. Применение программных средств в проектировании автомобильных конструкций. Калядин В.И. - 46 стр.

UptoLike

Составители: 

46
Sub VSpline(t As Double, ByVal n As Long, X() As Double, Y() _
As Double, tPxy() As Double, Kod As Long, Vx As Double, Vy As Double)
' Процедура, использующая функцию HS для расчѐта
' параметрического кубического сплайна двух переменных
' x(1 To n), y(1 To n), Kod - описаны в HS, кроме того,
'если Kod <=1, то вычисляются узлы параметрической сетки.
' Массив узлов сетки и производных tPxy(1 to n, 0 To 2):
' tPxy(1 To n, 0) - длина ломанной до i-ой точки, т.е. узлы
i
t
' tPxy(1 To n, 1) производные dX/dt по t в узлах
i
t
' tPxy(1 To n, 2) производные dY/dt по t в узлах
i
t
' Vx,Vy вычисленные координаты сплайн-кривой для значения t
Dim KodErr As Long, KD As Long
If Kod <= 1 Then
tPxy(1, 0) = 0#
For i = 2 To N ' Расчѐт узлов параметрической сетки
tPxy(i, 0) = Sqr((X(i) - X(i - 1)) ^ 2+(Y(i) - Y(i - 1)) ^ 2)+tPxy(i - 1, 0)
Next i
End If
KD = Kod
Vx = HS(t, N, tPxy(1, 0), X(1), tPxy(1, 1), KD, KodErr)
If KodErr <> 0 Then Stop
Vy = HS(t, N, tPxy(1, 0), Y(1), tPxy(1, 2), Kod, KodErr)
If KodErr <> 0 Then Stop
End Sub
Если задать Kod=1 (или
Kod<1) и вызвать проце-
дуру VSpline, то по X,Y-
координатам исходных
точек для рис. 3.3 и 3.5
происходит вычисление
параметров t узлов
сплайн-кривой (см. рис. 3.5). Если для точек с рис. 3.3 задана длина
Рис. 3.5.
Sub VSpline(t As Double, ByVal n As Long, X() As Double, Y() _
 As Double, tPxy() As Double, Kod As Long, Vx As Double, Vy As Double)
' Процедура, использующая функцию HS для расчѐта
' параметрического кубического сплайна двух переменных
' x(1 To n), y(1 To n), Kod - описаны в HS, кроме того,
'если Kod <=1, то вычисляются узлы параметрической сетки.
' Массив узлов сетки и производных tPxy(1 to n, 0 To 2):
' tPxy(1 To n, 0) - длина ломанной до i-ой точки, т.е. узлы ti
' tPxy(1 To n, 1) – производные dX/dt по t в узлах ti
' tPxy(1 To n, 2) – производные dY/dt по t в узлах ti
' Vx,Vy – вычисленные координаты сплайн-кривой для значения t
Dim KodErr As Long, KD As Long
If Kod <= 1 Then
 tPxy(1, 0) = 0#
 For i = 2 To N                ' Расчѐт узлов параметрической сетки
   tPxy(i, 0) = Sqr((X(i) - X(i - 1)) ^ 2+(Y(i) - Y(i - 1)) ^ 2)+tPxy(i - 1, 0)
 Next i
End If
KD = Kod
Vx = HS(t, N, tPxy(1, 0), X(1), tPxy(1, 1), KD, KodErr)
   If KodErr <> 0 Then Stop
Vy = HS(t, N, tPxy(1, 0), Y(1), tPxy(1, 2), Kod, KodErr)
    If KodErr <> 0 Then Stop
End Sub
  Если задать Kod=1 (или
Kod<1) и вызвать проце-
дуру VSpline, то по X,Y-
координатам      исходных
точек для рис. 3.3 и 3.5
происходит    вычисление                  Рис. 3.5.
параметров     t     узлов
сплайн-кривой (см. рис. 3.5). Если для точек с рис. 3.3 задана длина

                                             46