Here is a start:
module Geometry
export Point, Direction, Ray
using ImmutableArrays
typealias Vec Vector3
type Point
c::Vec
end
Point(a::Array) = Point(Vec(a))
type Direction
v::Vec
Direction(v) = new(unit(v))
end
Direction(a::Array) = Direction(Vec(a))
type Ray
pos::Point
dir::Direction
end
Ray(a::Array,b::Array) = Ray(Point(a),Direction(b))
step(a::Point,b::Number,c::Direction) = Point(a.c + b*c.v)
end
Let me know what you guys think.
On Wednesday, October 1, 2014 10:05:51 AM UTC+10, Yakir Gagnon wrote:
>
> A Geometry package has been discussed here
> <https://groups.google.com/d/topic/julia-dev/vZpZ8NBX_z8/discussion> and
> here <https://groups.google.com/d/topic/julia-dev/fqwnyOojRdg/discussion>
> (Spherical,
> Geographic, Homogeneous coordinate systems in 1 to 4 dimensions and more).
>
> I'm in need of something significantly simpler: a Geometry module for a
> Cartesian coordinate system in 3D with Point, Direction, and Line types.
> Has anyone written something like that? Maybe that ambitious Geometry
> package is further along or been announced and I missed it?
>
> Thanks a bunch!
>