# Queries regarding ray traversing through cube using VoxelRayTracers package

**URL:** <https://discourse.julialang.org/t/queries-regarding-ray-traversing-through-cube-using-voxelraytracers-package/34880>\
**Category:** General Usage\
**Created:** [February 19, 2020, 11:34pm UTC](https://discourse.julialang.org/t/queries-regarding-ray-traversing-through-cube-using-voxelraytracers-package/34880 "2020-02-19T23:34:38Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Manu\_Francis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/manu_francis/32/10010_2.png) [@Manu\_Francis](https://discourse.julialang.org/u/Manu_Francis)\
**Post date:** [February 19, 2020, 11:34pm UTC](https://discourse.julialang.org/t/queries-regarding-ray-traversing-through-cube-using-voxelraytracers-package/34880/1 "2020-02-19T23:34:39Z")

</div>

Hi ,

I am trying to use [VoxelRayTracers.jl](https://github.com/jw3126/VoxelRayTracers.jl). I have few doubts regarding usage of this package.

I want to trace a ray through 3D voxelized cube. My aim is to find ray intersected voxels with intersection lengths.

1. How can I use this package with ray or line start and end points, instead of start point and velocity?
2. How can I calculate intersection length by using entry and exit time?

Can anyone reply regarding my queries?

Thanks in Advance !  
Manu

---

<div class="post-metadata">

**Author:** ![jw3126](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jw3126/32/3086_2.png) [@jw3126](https://discourse.julialang.org/u/jw3126)\
**Post date:** [February 20, 2020, 8:23am UTC](https://discourse.julialang.org/t/queries-regarding-ray-traversing-through-cube-using-voxelraytracers-package/34880/2 "2020-02-20T08:23:29Z")

</div>

Something like this:

- As for your first question:

```julia
ray = (position=startpoint, velocity= endpoint - startpoint)
endtime = 1
for hit in eachtraversal(ray, edges)
    if hit.exit_time > endtime
        # endpoint might be in the middle of a voxel, handle this edge case
        break
    else
        # handle ordinary hit
    end
end

```

- For your second question intersection length can be computed as follows:

```julia
(hit.exit_time - hit.entry_time) * norm(ray.velocity)

```

---

<div class="post-metadata">

**Author:** ![Manu\_Francis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/manu_francis/32/10010_2.png) [@Manu\_Francis](https://discourse.julialang.org/u/Manu_Francis)\
**Post date:** [February 20, 2020, 12:12pm UTC](https://discourse.julialang.org/t/queries-regarding-ray-traversing-through-cube-using-voxelraytracers-package/34880/3 "2020-02-20T12:12:55Z")

</div>

Hi @jw3126:

Thanks a lot for your amazing reply. It is very helpful for me.  
I think there is a small typo error in the answer to my second question, the intersection length may be:  
`norm(ray.velocity) *(hit.exit_time - hit.entry_time)`

Anyway, I will play more with this package.

Thanking you,  
Manu

---

<div class="post-metadata">

**Author:** ![jw3126](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jw3126/32/3086_2.png) [@jw3126](https://discourse.julialang.org/u/jw3126)\
**Post date:** [February 20, 2020, 12:36pm UTC](https://discourse.julialang.org/t/queries-regarding-ray-traversing-through-cube-using-voxelraytracers-package/34880/4 "2020-02-20T12:36:08Z")

</div>

I fixed the formula, now the units make sense.

---

<div class="post-metadata">

**Author:** ![Manu\_Francis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/manu_francis/32/10010_2.png) [@Manu\_Francis](https://discourse.julialang.org/u/Manu_Francis)\
**Post date:** [February 20, 2020, 12:43pm UTC](https://discourse.julialang.org/t/queries-regarding-ray-traversing-through-cube-using-voxelraytracers-package/34880/5 "2020-02-20T12:43:54Z")

</div>

@jw3126: Thank you
