Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/juliageometry/raytraceellipsoid.jl

Ray trace ellipsoid-shaped domes. Find intersection points and refract/reflect according to the refractive indices.
https://github.com/juliageometry/raytraceellipsoid.jl

dome ellipsoid ray-tracing reflect refract refractive-index

Last synced: about 1 month ago
JSON representation

Ray trace ellipsoid-shaped domes. Find intersection points and refract/reflect according to the refractive indices.

Awesome Lists containing this project

README

        

# RayTraceEllipsoid

[![Build status](https://ci.appveyor.com/api/projects/status/g8b6iw3wbx6mgxo5?svg=true)](https://ci.appveyor.com/project/skariel/raytraceellipsoid-jl) [![Build Status](https://travis-ci.org/JuliaGeometry/RayTraceEllipsoid.jl.svg?branch=master)](https://travis-ci.org/JuliaGeometry/RayTraceEllipsoid.jl) [![codecov.io](http://codecov.io/github/juliaGeometry/RayTraceEllipsoid.jl/coverage.svg?branch=master)](http://codecov.io/github/juliaGeometry/RayTraceEllipsoid.jl?branch=master)

This Julia package allows for geometric ray tracing with ellipsoids (actually domes shaped as ellipsoids). It includes intersection and refraction/reflection of rays with arbitrary ellipsoids. It accomplishes that in about 100 lines of code thanks to heavy use of `CoordinateTransformations.jl` and `StaticArrays.jl`.

These ellipsoid-domes are defined with `Ellipsoid` (see details with `help?> Ellipsoid`). The normal and refractive indices are defined within the `Interface` type. These two are baked into a single `OpticUnit`.

`Ray`s `advance!` to intersect with the `Ellipsoid`s and `bend!` at the `Interface`s. The `raytrace!` function includes these two actions, taking in a `Ray` and an `OpticUnit`, updating the location and direction of the ray.

## Todo
- add rotated ellipsoids
- add more shapes, so it's not only `RayTrace**Ellipsoid**`