Hello, I am doing some experiment with point cloud visualization, and found a procedure to generate normals from these

point clouds. The idea is to use the points to generate the normal. The problem is that I may be misunderstanding what should be done. For instance, if I have two points with coordinates (0,0,5) and (0,0,10), so I expected the normal to be (0,0,1), in that way the point can be "reached" by taking the normal and multiplying it by a constant, but what I am getting it is a (1,0,0) or a (0,1,0) normal that can never "reach" neither of these points, so that's why I think I am doing something wrong.

I attached an screenshot of the procedure, and here I will simulate my calculations done with these two points, so hopefully someone will be able to see a mistake.

Here is the screenshot:

**Screenshot.png** **58.14KB**
4 downloads

Here is the simulation: H = [ || (0,0,5) - (0,0,5) || / 2 ] + [ || (0,0,10) - (0,0,5)|| / 2 ]

H = 0 + 2.5 = 2.5

Wp (0,0,5) = e ^ [ (|| (0,0,5) - (0,0,5) ||) / 2.5² ] = e^0 = 1

Wp (0,0,10) = e ^ [ (|| (0,0,10) - (0,0,5) ||) / 2.5² ] = e^(5/6.25) = e^0.8 =~ 2.22

Mp = (Wp (0,0,5) * (0,0,5) + Wp (0,0,10) * (0,0,10)) / Wp (0,0,5) + Wp (0,0,10)

= [1 * (0,0,5) + 3.22 * (0,0,10)] / 1 + 2,22 = (0,0,37.2) / 3.22 = (0,0,11.55)

C = | (0,0,5) - (0,0,11.55) | = (0,0,-6.55) Inverse C = | (0,0) |

| (0,0,10) - (0,0,11.55) | = (0,0,-1.55) | (0,0) |

| (-6.55,-1.55) |

Inverse C * C = |0 0 0 | eigenvalues = 0, 0, 45.307

|0 0 0 |

|0 0 45.3| eigenvectors = (1,0,0) (0,1,0) (0,0,1)

normal = (1,0,0) or (0,1,0)

Anyone saw anything wrong ?