在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/