Visual Basic/Data Types/User Defined

VB makes it possible to create user defined data types by means of the statement Type

Possible uses

Although VB has a rich variety of native data types like booleans, strings, doubles etc. it is impossible to think of everything. Take for example complex numbers and quaternions. These are mathematical objects (numbers actually) that obey certain rules of addition and multiplication.

For example a complex number has a real and an imaginary component

Z = re + im.i

A quaternion has three different imaginary components

H= a + b.i + c.j + d.k

It is possible to make your own complex numbers or quaternions by writing:

Type Complex
re as Double
im as Double
End Type

Or:

Type Quat
s as Double
i as Double
j as Double
k as Double
End Type

It is advisable to add a Option explicit statement, this avoids a lot of confusion between various types.

From now on you can treat these types as if they were native, but of course you will have to define functions to actually do something useful with them. Adding two complex numbers or quaternions means that you add the various parts separately:

Function AddQuat(a As Quat, b As Quat) As Quat
AddQuat.s = a.s + b.s
AddQuat.i = a.i + b.i
AddQuat.j = a.j + b.j
AddQuat.k = a.k + b.k
End Function

Multiplying two quaternions is bit more involved, but this works fine:

Function MultQuat(a As Quat, b As Quat) As Quat
MultQuat.s = a.s * b.s - a.i * b.i - a.j * b.j - a.k * b.k
MultQuat.i = a.s * b.i + a.i * b.s + a.j * b.k - a.k * b.j
MultQuat.j = a.s * b.j + a.j * b.s + a.k * b.i - a.i * b.k
MultQuat.k = a.s * b.k + a.k * b.s + a.i * b.j - a.j * b.i
End Function
Last modified on 28 July 2009, at 20:51