gpt4 book ai didi

c - C 路口面积

转载 作者:行者123 更新时间:2023-11-30 19:51:34 24 4
gpt4 key购买 nike

假设我有5个矩形,每个矩形有4个参数,它们是 x、y、宽度、高度。 x 和 y -> 开始协调,w 和 h -> 边缘。我们如何计算交叉面积?

 int rectangle[5][4];

int calculate_intersection(){
....
return total;
}

最佳答案

您将需要迭代地创建新的矩形,每个矩形都是前一个矩形的交集。假设您有四个矩形,将它们命名为 Ri哪里i1, 2, 3,4 。我们将交叉矩形称为 I4 ,表示 4 个矩形的交集。

首先我们要相交 R1R2 。保存结果 width , height , x ,和y进入I4 .

接下来我们要相交 R3I4 。保存结果 width , height , x ,和y进入I4 .

然后我们想要相交 R4I4 。保存结果 width , height , x ,和y进入I4 .

此时I4是所有 4 个矩形相交的结果,R1, R2, R3,R4 。我相信您现在已经知道如何计算给定这些值的面积。

: : 寻找交集的提示和伪代码 : :

考虑到矩形之间可能处于任何方向和位置,我们需要做一些工作来找出点相对于彼此的位置。通常,我们将使用 MAXMIN函数,或者您可以使用这些单行:

int max = (a>b) ? a : b;
int min = (a<b) ? a : b;

max这里将保存 a 的值或b ,以较大者为准,“min”将保留较小者。现在我们可以解决我们的问题了。

查找I4 x -值,我们需要取 Ri 的最大值和Rj x 方向的矩形: I4x = max{Ri_x, Rj_x}

查找I4 y -值,我们需要取 Ri 的最大值和Rj y 方向的矩形:I4y = max{Ri_y, Rj_y}

查找I4 width -值,我们需要取 Ri 的最小值和Rj矩形宽度,但是我们需要减去最终移位的 x位置:I4w = min{Ri_x + Ri_w, Rj_x + Rj_w} - I4_x

查找I4 height -值,类似地,我们需要取 Ri 的最小值和Rj矩形高度并减去最终移动的 y位置:I4w = min{Ri_y + Ri_h, Rj_y + Rj_h} - I4_y

关于c - C 路口面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40963140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com