Sphere

//Constructors/Producers
Center(TouchPoint) -> Sphere

//Methods
Sphere.Center() -> vec3
Sphere.Radius() -> float

Ray

//Constructors/Producers
CockpitWSRay(CockpitMouseEvent) -> Ray
Ray(RayTouch) -> Ray
VSRay(CockpitMouseEvent) -> Ray
WorldWSRay(CockpitMouseEvent) -> Ray
transform(Ray, mat4) -> Ray

//Methods
Ray.Direction() -> vec3
Ray.Origin() -> vec3
Ray.transform(mat4) -> Ray

RayTouch

//Methods
RayTouch.DidPress() -> bool
RayTouch.HitPos() -> vec3
RayTouch.IntersectionDistance() -> float
RayTouch.IsInteractionDown() -> bool
RayTouch.Ray() -> Ray

GeomIntersection

//Constructors/Producers
getValue(OptionalGeomIntersection) -> GeomIntersection

//Methods
GeomIntersection.Distance() -> float
GeomIntersection.Point3D() -> vec3

IntersectionMesh

//Constructors/Producers
IntersectionMesh(Mesh) -> IntersectionMesh

//Methods
IntersectionMesh.intersect(Sphere) -> OptionalGeomIntersection
IntersectionMesh.intersect(Ray, float) -> OptionalGeomIntersection

OptionalGeomIntersection

//Constructors/Producers
intersect(IntersectionMesh, Sphere) -> OptionalGeomIntersection
intersect(IntersectionMesh, Ray, float) -> OptionalGeomIntersection

//Methods
OptionalGeomIntersection.getValue() -> GeomIntersection
OptionalGeomIntersection.hasValue() -> bool