Multidimensional vectors and computing pi (revisited)
We will start by defining a vector in three dimensions; this is a vector in the mechanical sense and not the Julia vector sense, that is, a one-dimensional array.
We will define a V3D
module using the following code:
#= This module uses Float64 components but could use a parameterised type {T} as will be seen later =# module V3D # import operators from Base and Linear Algebra import Base: +, *, /, ==, <, >, zero, one, iszero import LinearAlgebra: norm, dot # and export the type Vec3 and norm, dist functions (for Vec3) export Vec3, norm, dist # define a simple structure to hold the coordinates of the vector struct Vec3 x::Float64 y::Float64 z::Float64 end # and the 'usual' runs for manipulating vectors (+)(a::Vec3, b::Vec3) = Vec3(a.x+b.x, a.y+b.y, a.z+b.z) (*)(p::Vec3, s::Real) = Vec3(p.x*s, p.y*s, p.z*s) (*)(s::Real, p::Vec3) = p*s (/)(p::Vec3, s...