我有一个正方形,为简单起见,假设左下角是原点,正方形的宽度是1。
光线将正方形分为两部分。我有交叉点的坐标。我想获得位于p1
到p2
的矢量右侧的区域:
现在我有16个if
语句检查2个点的每个组合并相应地计算区域。看起来很糟糕。有没有更聪明的方法呢?
答案 0 :(得分:1)
调用点 A 和 B 而不是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,area = 1+(A y B x )/ 2
或 B 可能在y = 1,area =(A y -1)B x / 2
答案 1 :(得分: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