gpt4 book ai didi

algorithm - 有什么聪明的方法可以判断一个点是否在矩形内?

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

我想计算一个点,(x,y) , 位于由两点 (a,b) 确定的矩形内和 (c,d) .

如果a<=cb<=d ,那么就很简单了:

a<=x&&x<=c&&b<=y&&y<=d

然而,由于未知是否a<=cb<=d ,代码应该是

(a<=x&&x<=c||c<=x&&x<=a)&&(b<=y&&y<=d||d<=y&&y<=b)

此代码可能有效,但它太长了。我可以编写一个函数并使用它,但我想知道是否有更短的方法(并且应该执行得非常快 - 代码被调用了很多)来编写它。

我能想到的是:

((c-x)*(x-a)>=0)&&((d-y)*(y-b)>=0)

有没有更聪明的方法来做到这一点?

(还有,有什么好的方法可以从 c 开始迭代吗?)

最佳答案

根据需要交换变量,使 a = xmin 和 b = ymin:

if a > c: swap(a,c)
if b > d: swap(b,d)

a <= x <= c and b <= y <= d

更短但效率稍低:

min(a,c) <= x <= max(a,c) and min(b,d) <= y <= max(b,d)

与往常一样,在优化时,您应该分析不同的选项并比较硬性数字。流水线、指令重新排序、分支预测和其他现代编译器/处理器优化技术使得程序员级别的微优化是否值得变得不明显。例如,过去执行乘法比执行分支的成本要高得多,但现在情况不再总是如此。

关于algorithm - 有什么聪明的方法可以判断一个点是否在矩形内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7617486/

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