0

我有一个正方形,为简单起见,假设左下角位于原点,正方形的宽度为 1。

一条射线将正方形分成两部分。我有交点的坐标。p1我想从to获得向量右侧的区域p2

射线分割正方形

现在我有 16 个if语句检查 2 个点的每个组合并相应地计算面积。看起来很糟糕。有没有更聪明的方法来做到这一点?

4

2 回答 2

1

调用点AB而不是 p 1和 p 2。按照惯例,我假设 x 向右增加,y 向上增加。

A的坐标(x 或 y)必须为 0 或 1。旋转正方形(实际上只是两个点)使其 x=0。

B可能在 x=-1,在这种情况下,面积为 1-(A y +B y )/2。

或者B可能在 y=0,面积 = 1+(A y B x )/2

或者B可能在 y=1,面积 = (A y -1)B x /2

于 2013-03-24T03:32:11.763 回答
0

此解决方案假设 p1 和 p2 形成一个直角三角形,如阴影区域所示:

向量右侧的面积 = (w * w) - (0.5 * p1 * p2) 其中 w 是正方形的宽度,0 <= p1 <= w,0 <= p2 <= w。

例如,如果 w = 1、p1 = 0.5 和 p2 = 0.75,则面积 = (1 * 1) - (0.5 * 0.5 * 0.75) = 0.8125

于 2013-03-24T03:29:32.650 回答