找到两个四边形边缘的点

时间:2017-05-23 22:37:55

标签: c# unity3d geometry

在Unity中,我的UI Canvas上有两个对象。我试图绘制一条线,从一个对象的边缘开始,并动态地结束另一个对象的边缘。我可以想到一种方法:

使用来自每个对象中心的线条,找到线条与对象边缘相交的点。在下面的屏幕截图中,这些将是黄色和紫色点。

Photoshopped reference

有没有人有关于如何编码的指示?我无法找到交叉点。提前谢谢!

1 个答案:

答案 0 :(得分:1)

让矩形的中心具有坐标(acx,acy)(bcx, bcy),矩形宽度和高度为aw, ah, bw, bh

寻找中心差异

(dx, dy) = (bcx-acx, bcy-acy)

如果

,则线与矩形的垂直边相交
Abs(dx) * ah >= Abs(dy) * aw

(否则为水平边缘)

如果dx>0为右边,交点x坐标为A.right,否则为A.left
并且您必须求解方程(由于三角形相似性)才能找到交点y坐标

aw/2 / Abs(dx) = (aintersection.y - acy) / dy
aintersection.y = acy + aw * dy / (2*dx)

通过类比考虑水平边缘情况