如何在没有if语句的情况下将if语句转换为按位运算

问题描述

我有这个任务:

三个平面X = 0,Y = 0和Z = 0将3D空间划分为8个八分圆域。给定一个 3D点的数组,以下函数计算属于每个点的点数 八分圆。编写一个不使用if语句或if运算符的函数版本。

typedef float pnt[3];
void count(pnt const * pnts,const int n,unsigned cnt[8]) {
 
  for(int i=0; i<8; ++i)
    cnt[i] = 0;
  for(int i=0; i<n; ++i)
    if(pnts[i][0]>=0.0f && pnts[i][1]>=0.0f && pnts[i][2]>=0.0f ) ++cnt[7]; else
    if(pnts[i][0]>=0.0f && pnts[i][1]>=0.0f && pnts[i][2]< 0.0f ) ++cnt[3]; else
    if(pnts[i][0]>=0.0f && pnts[i][1]< 0.0f && pnts[i][2]>=0.0f ) ++cnt[5]; else
    if(pnts[i][0]>=0.0f && pnts[i][1]< 0.0f && pnts[i][2]< 0.0f ) ++cnt[1]; else
    if(pnts[i][0]< 0.0f && pnts[i][1]>=0.0f && pnts[i][2]>=0.0f ) ++cnt[6]; else
    if(pnts[i][0]< 0.0f && pnts[i][1]>=0.0f && pnts[i][2]< 0.0f ) ++cnt[2]; else
    if(pnts[i][0]< 0.0f && pnts[i][1]< 0.0f && pnts[i][2]>=0.0f ) ++cnt[4]; else
    ++cnt[0];
}

解决此问题的最佳方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)