gpt4 book ai didi

c - 平面中 2 个点的边界框

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:16 25 4
gpt4 key购买 nike

我在平面上有 2 个点 A 和 B。我需要找到的是点 w、x、y 和 z,这样我就可以有一个统一的边界框。条件是由 wx 和 yz 形成的线平行于 AB。同样wBz和xAy平行必须平行。另请注意,角度 zwx 和 wxy 是直角。基本上 wxyz 必须是正方形。

          z
/ /
B /
/ /
w /
/ y
/ /
/ A
/ /
x

如果线 AB 平行于 x 轴或 AB 平行于 y 轴,基本上找到 w、x、y 和 z 很容易。当线 AB 与 x 轴成一定角度(线 AB 的斜率可能为正或负)时,我无法确定点 w、x、y 和 z。

我们非常感谢您提出任何意见/建议。谢谢!

最佳答案

将 A 和 B 视为平面中的 vector ,(xa, ya) 和 (xb, yb)。取 vector 差值,生成一个从 A 指向 B 的 vector C。

C = A - B = (xa - xb, ya - yb) = (xc, yc)

将此 vector 沿每个方向旋转 90 度,并缩放一半,得到 D = (xd, yd) 和 E = (xe, ye)。

D = (-yc/2, +xc/2)
E = -D = (+yc/2, -xc/2)

用 vector 算出正方形的四个点。

w = B + D
x = A + D
y = A + E
z = B + E

编辑:胖手指。

EDIT2:忘记了一半的因素。

EDIT3:根据要求, vector 旋转引用。

要计算 vector 旋转,通常可以用 rotation matrix 执行乘法运算.在这种情况下,+/- pi/2 的 sin 和 cos 因数最终为 +/- 1。

如果您不喜欢矩阵乘法,请在纸上(或想象一下)在任何象限中画一个样本 vector 。现在将纸向任一方向旋转 90 度,看看 x 和 y 分量如何交换和取反。

关于c - 平面中 2 个点的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220240/

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