在C++中的2D环境中,如何找到射线(由一个点和方向 vector 定义)与矩形(由x,y,w,h定义)之间的交点?

                   ________
                  |        |
                  |        |
------------------|        |
                  |________|

这是基于无框架的仿真,因此我不确定如何解决该问题。

最佳答案

二维矩形= 4个线段。

所以您的问题实际上是:How do I determine whether or not two lines intersect, and if they do, at what x,y point?

您可以计算所有线段的交点,然后根据|A-Xi|选择闭合线段,其中A是 vector 原点,Xi是相交点,||表示 vector 长度(sqrt(A.x*Xi.x + A.y*Xi.y),如果您只需要比较,则实际上不需要使用sqrt()距离,不需要确切的数字)。

关于c++ - 射线与矩形的交点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9129571/

10-11 16:19