This is probably a really simple question, but I’m awful with maths and geometry.
Given a point in the world with a unit vector direction (X) how can I get the point where it intersects with a plane?
Diagram
Blue = What I want to get
I’m doing this as a replacement for raycasting, as I don’t want the hitpoint of the ray to go into the void and instead stop at a level of my choosing. Creating a massive part isn’t possible because the area would be bigger than 1024x1024.
Thanks!
NWSpacek
(NWSpacek)
July 7, 2018, 7:49am
#2
There’s an easier way: if the end position of the ray is below the Y value threshold, then you can consider the ray to have crossed it.
Since the XZ plane is orthogonal with the coordinate system, a simple bit of geometry can be used:
Aim = start + direction*(Sealevel-start.Y)/direction.Y -- triangle scaling laws at work
This code will divide by zero if direction has a zero Y component, so check for that!
4 Likes
This works great, thank you!