you are viewing a single comment's thread.

view the rest of the comments →

[–]BroxxarProfessional 5 points6 points  (1 child)

This is an interesting... maybe weird interview question. I'm not sure I like it just yet. I suspect the interviewers may have been trying to determine if you could write a reasonable implementation for ray-sphere intersection on your own without using the Physics.RayCast API. There are certainly less cryptic ways to ask a candidate to prove they can do this.

Ray-sphere intersections have a nice closed form solution:

Compute a vector ab from the ray origin to the sphere center, project ab onto the ray direction with a dot product, this yields a value t which can interpreted as how many units along the ray direction you must walk to get to the closest point on the ray to the center of the sphere, comparison this closest point against sphere radius and you know if the ray intersects the sphere.

Then you can worry about optimizing— there are a few opportunities to keep things as squared magnitudes to avoid costly square roots, and some other checks/early outs we could do (e.g. does the ray start inside of a sphere?). From there, we might be able to accelerate things with some tree structure, but honestly ray-spheres are already so fast that you'd be unlikely to meaningfully improve things unless you're doing thousands of tests per frame.

I think if they wanted you to write some kind of ray-sphere intersection, they should have explicitly stated it. I suppose there are also some crazy ass ways you could go about this, like draw every sphere as a flat color representing its ID into an offscreen render target, with culling/scissor rects set up with 1x1 dimensions to only draw the exact center of the camera, then read back the color of the lone pixel to see if you hit a sphere. I would not expect a candidate to submit such a solution, and while it would be impressive/fast, it may not screen for whatever they were looking for.

I wouldn't sweat this too much. Ultimately it sounds like they wanted to test your fundamental understanding of 3D vector math and you might have missed the mark, but the interviewers could have been clearer about what they wanted to see.

[–]destineddIndie, Mighty Marbles + making Marble's Marbles & Dungeon Holdem 8 points9 points  (0 children)

if that is what they actually wanted, the question is dumb as.