📄 module3.bas
字号:
Attribute VB_Name = "Module3"
Option Explicit
Dim ang As Single
Dim ang2 As Single
Dim lng As Single
Public Const pi = 3.141592654
Public Type Vector
X As Single
Y As Single
Z As Single
End Type
Public Sub VectorSub(ByRef a As Vector, ByRef B As Vector, ByRef result As Vector) '// result = a - b
With result
.X = a.X - B.X
.Y = a.Y - B.Y
.Z = a.Z - B.Z
End With
End Sub
Public Function VectorAdd(ByRef a As Vector, ByRef B As Vector) As Vector
With VectorAdd
.X = a.X + B.X
.Y = a.Y + B.Y
.Z = a.Z + B.Z
End With
End Function
Public Function Vectorscale(ByRef a As Vector, sd As Single) As Vector
Vectorscale.X = a.X * sd
Vectorscale.Y = a.Y * sd
Vectorscale.Z = a.Z * sd
End Function
Public Function VectorDot(ByRef a As Vector, ByRef B As Vector) As Single
With a
VectorDot = (.X * B.X) + (.Y * B.Y) + (.Z * B.Z)
End With
End Function
Public Sub VectorCross(ByRef a As Vector, ByRef B As Vector, ByRef result As Vector)
result.X = a.Y * B.Z - a.Z * B.Y
result.Y = a.Z * B.X - a.X * B.Z
result.Z = a.X * B.Y - a.Y * B.X
End Sub
Public Sub VectorNormalize(ByRef V As Vector)
Dim sngScaleFactor As Single
With V
sngScaleFactor = 1 / Sqr((.X * .X) + (.Y * .Y) + (.Z * .Z))
.X = .X * sngScaleFactor
.Y = .Y * sngScaleFactor
.Z = .Z * sngScaleFactor
End With
End Sub
Public Function VectorLength(ByRef a As Vector) As Single
With a
VectorLength = Sqr((.X * .X) + (.Y * .Y) + (.Z * .Z))
End With
End Function
Public Function VectorRollz(ByRef a As Vector, an As Single) As Single
lng = Sqr(a.X * a.X + a.Y * a.Y)
If a.X <> 0 Then ang = Atn(a.Y / a.X)
If a.X < 0 Then
ang = pi + ang
End If
ang = ang + an
a.X = lng * Cos(ang)
a.Y = lng * Sin(ang)
End Function
Public Function VectorRollx(ByRef a As Vector, an As Single) As Single
lng = Sqr(a.Z * a.Z + a.Y * a.Y)
If a.Y <> 0 Then ang = Atn(a.Z / a.Y)
If a.Y < 0 Then
ang = pi + ang
End If
ang = ang + an
a.Y = lng * Cos(ang)
a.Z = lng * Sin(ang)
End Function
Public Function VectorRolly(ByRef a As Vector, an As Single) As Single
lng = Sqr(a.X * a.X + a.Z * a.Z)
If a.Z <> 0 Then ang = Atn(a.X / a.Z)
If a.Z < 0 Then
ang = pi + ang
End If
ang = ang + an
a.Z = lng * Cos(ang)
a.X = lng * Sin(ang)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -