Hello, I’m implementing this algorithm in my project and I am very confused with the maths. I was wondering if this is the best way to get the voxel accessibility values or if anyone could be nice to clarify how to do this in C#.
The accessibility of a voxel is written as a(x), where x is the voxel you’re getting the accessibility of, and j is the iteration. In the first iteration, where j is equal to zero, the value of a<0>(x) is simply the number of neighbors that voxel has. So if this voxel is at (3, 5, 7) (as in x = 3, y = 5, and z = 7) in space, you would just check how many voxels exist in the surrounding spaces. (So that’d be (2, 4, 6), (2, 4, 7), (2, 4, 8), (2, 5, 6), etc.). In the next iteration, you can use the data from the first iteration to get a more nuanced understanding of accessibility. In this iteration, j = 1, you calculate a<1>(x) by adding a<0>(x) to a new value A. A is calculated by adding up all the a<0> values of all of x’s neighbors (or in other words, how many neighbors each of your neighbors has), and then multiplying that total by w^j, where “w” is some weight value used to keep your numbers from getting bigger each iteration. They used 0.1 for w, so you multiply the sum of all neighbors a<0>'s by 0.1 to get A. You can do this again, where j = 2, and now you’re adding a<1>(x) to each neighbor’s a<1> multiplied by a^2, or 0.01. You can do this as many times as you like, but they say doing it more than 3 didn’t seem necessary.