Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Postivity Violated with Improved Max Approximator and Non-Area Weighting #133

Open
zfergus opened this issue Nov 10, 2024 · 0 comments
Open
Assignees
Labels
bug Something isn't working

Comments

@zfergus
Copy link
Member

zfergus commented Nov 10, 2024

When using the improved max approximator, but not area weighting, the resulting barrier potential can be negative (i.e., attractive instead of repulsive). This only occurs in cases of parallel edges using the mollified formulation. The issue does not occur when using area weighting.

Background

Edge-edge mollification is still used, but not mentioned in the Convergent IPC paper. The original mollified edge-edge energy is

$$ \Psi_w(e) ~= \sum_{e_2 \in E \setminus e} m(e, e_2) b(d(e, e_2), \hat{d}) ~\approx \max_{e_2 \in E \setminus e} m(e, e_2) b(d(e, e_2), \hat{d}). $$

The improved max approximator with mollification is

$$ \Psi_w(e) = \sum_{e_2\in{E}\setminus{e}} m(e, e_2) b(d(e, e_2), \hat{d}) - \sum_{x\in{V}\setminus{e}} \sum_{e_3\in (E\cap x) \setminus e} m(e, e_3) b(d(x, e), \hat{d}) + \sum_{x \in V \setminus e} b(d(x,e), \hat{d}) $$ $$ = \sum_{e_2\in{E}\setminus{e}} m(e, e_2) b(d(e, e_2), \hat{d}) - \sum_{x\in{V}\setminus{e}} \left(\left[\sum_{e_3\in (E\cap x) \setminus e} m(e, e_3) b(d(x, e), \hat{d})\right] - b(d(x,e), \hat{d}) \right) $$ $$ = \sum_{e_2\in{E}\setminus{e}} m(e, e_2) b(d(e, e_2), \hat{d}) - \sum_{x\in{V}\setminus{e}} \left(\left[\sum_{e_3\in (E\cap x) \setminus e} m(e, e_3)\right] - 1 \right) b(d(x,e), \hat{d}) $$ $$ = \sum_{e_2\in{E}\setminus{e}} m(e, e_2) b(d(e, e_2), \hat{d}) - \sum_{x\in{V}\setminus{e}} (\rho_m(x, e) - 1) b(d(x, e), \hat{d}), $$

where

$$ \rho_m(x, e_1) = \sum_{e_2 \in (E \cap x) \setminus e_1} m(e_1, e_2), $$

and $E \cap x$ is the set of edges that contain $x$ as an end-point. The function $m$ is our edge-edge mollification function

$$ m = \begin{cases}-\frac{1}{\epsilon_{\times}^2} c^2+\frac{2}{\epsilon_{\times}} c & c<\epsilon_{\times}, \ 1 & c \geq \epsilon_{\times},\end{cases} $$

where $c= |e_1 \times e_2 |^2$ and $\epsilon_{\times}=10^{-3} |\bar{e}_1|^2 |\bar{e}_2|^2.$

Environment (please complete the following information):

  • OS and Version: macOS
  • Compiler and Version: Apple clang version 16.0.0
@zfergus zfergus added the bug Something isn't working label Nov 10, 2024
@zfergus zfergus self-assigned this Nov 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant