gpt4 book ai didi

c# - 优化象限选择

转载 作者:行者123 更新时间:2023-12-03 17:14:19 24 4
gpt4 key购买 nike

我正在研究一种将项目分割为象限的数据结构,我发现的瓶颈之一是我选择该点象限的方法。诚然,它相当简单,但它被调用了很多次,以至于它加起来。我想必须有一种有效的方法来将它扭曲成我想要的东西,但我想不出它。

private int Quadrant(Point p)
{
if (p.X >= Center.X)
return p.Y >= Center.Y ? 0 : 3;
return p.Y >= Center.Y ? 1 : 2;
}
CenterPoint 类型, 坐标为 ints .是的,我已经运行了一个代码配置文件,不,这不是过早的优化。

因为这仅在内部使用,我想我的象限不必在 Cartesian order 中。 ,只要它们的范围是 0-3。

最佳答案

C/C++ 中最快的方法是

(((unsigned int)x >> 30) & 2) | ((unsigned int)y >> 31)

(30/31 或 62/63,取决于 int 的大小)。
这将按 0、2、3、1 的顺序给出象限。

为 LBushkin 编辑:
(((unsigned int)(x - center.x) >> 30) & 2) | ((unsigned int)(y-center.y) >> 31)

关于c# - 优化象限选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3313847/

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