gpt4 book ai didi

algorithm - 矩形中的点

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:20 28 4
gpt4 key购买 nike

找到一个点是否在矩形中的最快方法是什么以这种形式给出:
我有两个点,它们是矩形的相对边的中心,以及一个数字,这些边的高度。我希望这是清楚的。
矩形(可能)未与轴对齐。我想知道在给定这些数据后是否有更快的算法来计算四个角、旋转等。

我想到但不确定如何实现(数学有问题)的一个想法是找到从点到两个中心之间的直线的距离,如果它小于一半的长度矩形的边,并且 在线 然后它在矩形中。我不知道如何更好地解释这一点。

也许图片可以帮助解释:explanation
给出了 A、B、C,以及边 A/B 的长度。基本上我认为如果 CD 小于边 A 的一半并且 D 在 AB 上,则点在矩形中。但是我该怎么做呢?
另一个想法:与其找 D 看它是否在 AB 上,不如检查角 ABC 和 BAC 是否锐角,但我仍然不知道该怎么做。

最佳答案

下面的方法很简单,但是需要找到1个向量长度(可以缓存起来多次校验)

  1. 计算向量AB = B - A

  2. 计算AB 长度 - 它将是矩形的宽度

  3. 如果AB_length < TOLERANCE(公差是一个小值,例如,TOLERANCE = 0.00000001)则矩形的宽度为零,因此该点不能位于矩形内

  4. 归一化 AB:AB_normalized = AB/AB_length

  5. 计算轴投影

    计算 AB 投影:

    AB_proj = 点积(AB_normalized, C - A)

    计算 AB 正交投影(在您的图片中表示为“CD”):

    AB_orthogonal = (-AB.y, AB.x)

    AB_orthogonal_proj = 点积(AB_orthogonal, C - A)

  6. 如果 (0 <= AB_proj <= AB_length) 和 (ABS(AB_orthogonal_proj) <= AB_height/2),则该点位于矩形内,否则不位于

关于algorithm - 矩形中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6211805/

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