# Relaxation algorithm help :)

• Feb 4th 2008, 04:31 AM
daemon2004
Relaxation algorithm help :)
Hi there,

I am trying to understand an algorithm for relaxation of polgons on a sphere ( to resolve overlap or foldover),

The algorithm computes 'displacement' values for each vertex in the mesh based on it's 2-ring neighbours (degree 2) based on its neighbour vertices.

The algorithm says the following:

__________________________________________________ __________________________________

(for each vertex i in mesh)

neighbours[] = getNeighbours(i);
weight = 0.0;
displacements[i] = new Vector (0,0,0);
..........

for(each neighbour[j] of vertex i){

if( j not connected to flipped polygon)

Vector tmpV = j - i //calcualting a vector between j and i ??

displacements[i] += tmpV*tmpV.length()
weight += tmpV.lengthSquared() }

...........

displacements[i] /= weight;

__________________________________________________ _____________________________________

I cannot work out what the lines will actually do in relation to the algorithm:

displacements[i] += tmpV*tmpV.length()
weight += tmpV.lengthSquared()

What will it calulate in regard to the displacement (new location for vertex i to move to resolve the foldover), or how does it resolve the foldover based on these lines?

I understand vector lengths now and what they indicate but cannot work out what those two lines do.

I think j-i calculates a vector location between these two points, is that right?

displacements[i] /= weight, obviously finds the average weight based on all neighbours.