RosettaCodeData/Task/Vector/VBA/vector.vba

48 lines
1.7 KiB
Plaintext

Type vector
x As Double
y As Double
End Type
Type vector2
phi As Double
r As Double
End Type
Private Function vector_addition(u As vector, v As vector) As vector
vector_addition.x = u.x + v.x
vector_addition.y = u.y + v.y
End Function
Private Function vector_subtraction(u As vector, v As vector) As vector
vector_subtraction.x = u.x - v.x
vector_subtraction.y = u.y - v.y
End Function
Private Function scalar_multiplication(u As vector, v As Double) As vector
scalar_multiplication.x = u.x * v
scalar_multiplication.y = u.y * v
End Function
Private Function scalar_division(u As vector, v As Double) As vector
scalar_division.x = u.x / v
scalar_division.y = u.y / v
End Function
Private Function to_cart(v2 As vector2) As vector
to_cart.x = v2.r * Cos(v2.phi)
to_cart.y = v2.r * Sin(v2.phi)
End Function
Private Sub display(u As vector)
Debug.Print "( " & Format(u.x, "0.000") & "; " & Format(u.y, "0.000") & ")";
End Sub
Public Sub main()
Dim a As vector, b As vector, c As vector2, d As Double
c.phi = WorksheetFunction.Pi() / 3
c.r = 5
d = 10
a = to_cart(c)
b.x = 1: b.y = -2
Debug.Print "addition : ";: display a: Debug.Print "+";: display b
Debug.Print "=";: display vector_addition(a, b): Debug.Print
Debug.Print "subtraction : ";: display a: Debug.Print "-";: display b
Debug.Print "=";: display vector_subtraction(a, b): Debug.Print
Debug.Print "scalar multiplication: ";: display a: Debug.Print " *";: Debug.Print d;
Debug.Print "=";: display scalar_multiplication(a, d): Debug.Print
Debug.Print "scalar division : ";: display a: Debug.Print " /";: Debug.Print d;
Debug.Print "=";: display scalar_division(a, d)
End Sub