为了理解marching cube算法,我遵循了以下页面:
http://paulbourke.net/geometry/polygonise/
我有几个问题:
按位和是什么意思?,以及如何使用edge table来找到正确的tringles?
如果(网格值[0]if(边缘表[cubeindex]&1)
垂直列表[0]=
顶点中心点(isolevel,grid.p[0],grid.p[1],grid.val[0],grid.val[1]);
最佳答案
不会读那篇太长的课文。但在这里您可以找到位运算符如何工作https://en.wikipedia.org/wiki/Bitwise_operations_in_C。`
cubeindex |= 1 --> cubeindex = cubeindex | 1.
例如cubeindex=26(
binary 11010
)和1(binary 00001
)11010 | 00001 = 11011
给你一张26->27的广告。
对于以下
edgeTable[cubeindex] & 1
:例如cubeindex=17(
binary 10001
)\10001 & 00001 = 00001
这变成1。在if语句中使用,它只检查数字
edgeTable[cubeindex]
是否包含位00001
,并相应地返回true或false。希望这有帮助:)
干杯