vector3d.cls
来自「《MATLAB实用指南》系列丛书DE源代码」· CLS 代码 · 共 147 行
CLS
147 行
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "Vector3D"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Option Explicit
Private mdblX As Double
Private mdblY As Double
Private mdblZ As Double
Public Property Let z(ByVal vData As Double)
mdblZ = vData
End Property
Public Property Get z() As Double
z = mdblZ
End Property
Public Property Let y(ByVal vData As Double)
mdblY = vData
End Property
Public Property Get y() As Double
y = mdblY
End Property
Public Property Let x(ByVal vData As Double)
mdblX = vData
End Property
Public Property Get x() As Double
x = mdblX
End Property
'归一化
Public Sub Normalize()
Dim dblLen As Double
dblLen = GetLength
mdblX = mdblX / dblLen
mdblY = mdblY / dblLen
mdblZ = mdblZ / dblLen
End Sub
'获取归一化向量
Public Function GetNormal() As Vector3D
Dim dblLen As Double
dblLen = GetLength
GetNormal.x = mdblX / dblLen
GetNormal.y = mdblY / dblLen
GetNormal.z = mdblZ / dblLen
End Function
'获取向量在ZX面上的投影长度
Public Function GetLengthZX() As Double
GetLengthZX = Sqr(mdblZ * mdblZ + mdblX * mdblX)
End Function
'获取向量在YZ面上的投影长度
Public Function GetLengthYZ() As Double
GetLengthYZ = Sqr(mdblY * mdblY + mdblZ * mdblZ)
End Function
'获取向量在XY面上的投影长度
Public Function GetLengthXY() As Double
GetLengthXY = Sqr(mdblX * mdblX + mdblY * mdblY)
End Function
'获取向量的长度
Public Function GetLength() As Double
GetLength = Sqr(mdblX * mdblX + mdblY * mdblY + mdblZ * mdblZ)
End Function
'向量除以常数
Public Function Devide(dblC As Double) As Vector3D
Dim vctD As Vector3D
Set vctD = New Vector3D
vctD.x = mdblX / dblC
vctD.y = mdblY / dblC
vctD.z = mdblZ / dblC
Set Devide = vctD
End Function
'向量点乘
Public Function MultDot(vctV As Vector3D) As Double
MultDot = mdblX * vctV.x + mdblY * vctV.y + mdblZ * vctV.z
End Function
'向量叉乘
Public Function MultCross(vctV As Vector3D) As Vector3D
Dim vctM As Vector3D
Set vctM = New Vector3D
vctM.x = mdblY * vctV.z - vctV.y * mdblZ
vctM.y = mdblZ * vctV.x - vctV.z * mdblX
vctM.z = mdblX * vctV.y - vctV.x * mdblY
Set MultCross = vctM
End Function
'向量乘以常数
Public Function MultCon(dblC As Double) As Vector3D
Dim vctM As Vector3D
Set vctM = New Vector3D
vctM.x = mdblX * dblC
vctM.y = mdblY * dblC
vctM.z = mdblZ * dblC
Set MultCon = vctM
End Function
'向量相减
Public Function Subtract(vctV As Vector3D) As Vector3D
Dim vctS As Vector3D
Set vctS = New Vector3D
vctS.x = mdblX - vctV.x
vctS.y = mdblY - vctV.y
vctS.z = mdblZ - vctV.z
Set Subtract = vctS
End Function
'向量相加
Public Function Add(vctV As Vector3D) As Vector3D
Dim vctA As Vector3D
Set vctA = New Vector3D
vctA.x = mdblX + vctV.x
vctA.y = mdblY + vctV.y
vctA.z = mdblZ + vctV.z
Set Add = vctA
End Function
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?