Using beam tracing to calculate reflections in JavaScript
blog.kaistale.comSee also: http://zenphoton.com/
(use shift+click to move the light source)
I have also written polygon ray casting function a year ago. It can process thousands of rays at 60 FPS. http://polyk.ivank.net/?p=demos&d=raycast
It really never ceases to amaze me the things you can do in JavaSCript. That's the kind of thing that up until a few years ago you'd be hesitant to do in Java. This is really cool stuff! I look forward to when we get full powered PC games done in JS. We're not there yet, I know - but it's little steps like this that'll get us there.
There's nothing particularly hard about this, or special about javascript though. This is the kind of stuff you could've implemented back in the day and ran on a Pentium MMX. It's about having an efficient algorithm.
I agree, the speeds you can achieve with JavaScript are astounding. They are far superior to Python, it's a shame JS doesn't have that well of a support for scientific calculations.
If anyone could list what support there is that'd be really interesting.
Just a side note: Java used to be slow, but is actually a lot lot faster now. So while javascript is certainly impressively fast, Java is actually even faster still.
Although I believe this is true, I've used more fluid interfaces and played/have seen better performing demos/games in Javascript rather than Java.
Tons of cool stuff on that blog! http://blog.kaistale.com/
See also: http://www.laservex.com
How do you choose the angles at which you send the beams and the number of beams? It appears to be somewhat random, even though I'm sure it's not.
The algorithm calculates all possible specular reflections up to some order. I really don't think I can explain it any better than this paper: https://mediatech.aalto.fi/~samuli/publications/laine2009aa_...
Thanks, I'm going to read up on this.
It doesn't calculate all beams that originate from one point. It calculates only the beams which originate from one of the points and eventually reach the other point. It only looks random because the walls are placed at odd angles.
As someone who dabbles heavily in acoustics with javascript, THANK YOU! Let's talk.
Makes the three of us.. Nice work OP!
P.S. Also a fan of threedB @robmiller.. :)
It's great to stumble upon like-minded people on HN :-)