我想检查一条线(或线的任何点)是否在矩形内或与矩形相交。
我有 (x0, y0) 和 (x1, y1) 作为一条线的起点和终点。
另外,(ax,ay) 和 (bx,by) 作为矩形的左上角和右下角点
例如,
____________
| |
---|----- | Result: true
| |
|____________|
/
_/__________
|/ |
/ | Result: true
/| |
|____________|
____________
| |
| -------- | Result: true
| |
|____________| ---------- Result: false
谁能建议如何做到这一点?我不想知道那是哪一点,我只想知道它是否存在。
非常感谢您的帮助
第一种和第三种情况很简单 - 如果线的任一端点位于框内(即 > ax 和 ay,
第二个提出了一个问题 - 我们不能再依赖线路的端点。在这种情况下,我们必须测试矩形每条边的线。
我们的直线方程为(x1 - x0)*x + (y1 - y0)*y + x0*y0 - x1*y1 = 0
,我们可以使用角为矩形的每条边构造一个类似的方程。接下来,将矩形边的方程代入我们的直线将得到交集。
最后,我们检查以确保该点位于矩形边的边界内,并且同样位于我们正在考虑的线段内。
对此有更详细的说明这次讨论 http://www.gamedev.net/topic/83612-line-intersect-rect/page__view__findpost__p__1422026.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)