New answers tagged

0

My solution to this ended up being not sorting at all. Manipualting an already initialized HE is a nightmare, so instead I built the HE with this property from the get go. The initialization algorithm is pretty much: Create a new half edge. Check if the pair of the half edge exists. If it exists, you are allocated at index of pair + 1 If it does not exist, ...


1

It's defining the gradient in terms of barycentric coordinates. It is similar to the derivation in this answer, only rearranged a bit algebraically using the fact that the three barycentric coordinates sum to one. $$ \begin{aligned} f(\mathbf{u}) &= f_i B_i(\mathbf{u}) + f_j B_j(\mathbf{u}) + f_k B_k(\mathbf{u}) \\ &= f_i (1 - B_j(\mathbf{u}) - B_k(\...


0

I dont know what you are using to calculate the Cotan, the accuracy should different on the implementation. But you could do more accurate calculations yourself by approximating the values using taylor expansions. Or find some other librar that can do it more accurate. Also, make sure you are using high prec datatypes.


1

When solving the equation $(M - tL_C)u = \delta_\gamma$, you effectively have to invert the operator: $$ u = (M - tL_C)^{-1} \delta_\gamma $$ Note that while the individual operators $M$ and $L_C$ are only local, containing information about the individual vertices and edges of the mesh, the inverse operator is decidedly not local. Inversion is a global ...


3

Maybe you can find a heuristic to detect when it gets stuck (e.g. gradient magnitude is too small, or it stays on the same triangle or returns to a recently visited triangle too many times in a row, or it hasn't moved at least X distance over the last N steps, etc) and just take a random step in some direction, e.g. to some randomly chosen neighboring ...


Top 50 recent answers are included