gpt4 book ai didi

c++ - 跨 x 轴反射点后获取象限值

转载 作者:行者123 更新时间:2023-11-30 03:05:55 28 4
gpt4 key购买 nike

我在 2D 图形上有许多点,与实际坐标本身相比,我更关心它们所在的象限。我有一个函数 ReflectX(),它在子集上执行“沿 X 轴反射”并返回点现在所在的更新象限。因此,最初位于象限 1 的点现在位于象限 4,反之亦然;对于象限 2 和 3 类似。我不想使用 4 个 if-else 语句,而只想使用 2 个来进行优化。那可以吗?也欢迎对其他类型的优化提出任何建议。到目前为止我做了什么(不多):

int ReflectX(int q[], int x, int y){//x & y provide the range boundaries
int i;
for(i=x-1; i<y; i++){
if(q[i]==1 || q[i]==4) q[i]=(q[i]+3)%6;
else //change 2 into 3 and 3 into 2
}
}

编辑:我没有发布关于 ReflectY() 的信息,因为我可以用一个 if-else 条件来做到这一点。然而,基于Adam Rosenfield的答案我决定用一个单行公式优化这个函数并得到:

q[i] = (q[i] - pow(-1, q[i]%2));

最佳答案

只需查看包含所有可能输入和输出的表格,您就可以获得更简单的答案:

Initial quadrant   Reflected quadrant1                  42                  33                  24                  1

So, just do this:

q[i] = 5 - q[i];

关于c++ - 跨 x 轴反射点后获取象限值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7315337/

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