Classes | Functions
contrib/brl/bbas/imesh/algo/imesh_imls_surface.h File Reference

Interpolating Surface functions using IMLS. More...

#include <imesh/imesh_mesh.h>
#include <imesh/algo/imesh_kd_tree.h>
#include <vnl/vnl_double_3x3.h>

Go to the source code of this file.

Classes

class  imesh_imls_surface
struct  imesh_imls_surface::integral_data
 a data structure to hold the integral terms. More...

Functions

vgl_point_3d< double > bisect (const imesh_imls_surface &f, vgl_point_3d< double > pp, vgl_point_3d< double > pn, double feps=1e-8, double xeps=1e-16)
 find the zero crossing point by bisection between positive point pp and negative point pn.
bool snap_to_surface (const imesh_imls_surface &f, vgl_point_3d< double > &p, double step=0.5, double eps=1e-5)
 Move the point p along the gradient direction until reaching a zero crossing of f (within eps).
bool snap_to_surface_with_normal (const imesh_imls_surface &f, vgl_point_3d< double > &p, vgl_vector_3d< double > n, double step=0.5, double eps=1e-8)
 Move the point p to minimize (f^2 + (n*f' - 1)^2)/f'*f' a zero crossing of f (within eps).
bool snap_to_surface (const imesh_imls_surface &f, vgl_vector_3d< double > dir, vgl_point_3d< double > &p, double step=0.5, double eps=1e-5)
 Move the point p along direction dir until reaching a zero crossing of f (within eps).

Detailed Description

Interpolating Surface functions using IMLS.

Author:
Matt Leotta (mleotta@lems.brown.edu)
Date:
June 4, 2008

This code is based on the paper: C. Shen, J. O'Brien, J. Shewchuk "Interpolating and Approximating Implicit Surfaces from Polygon Soup" SIGGRAPH 2004

    Modifications
     <none yet>
   

Definition in file imesh_imls_surface.h.


Function Documentation

vgl_point_3d<double> bisect ( const imesh_imls_surface f,
vgl_point_3d< double >  pp,
vgl_point_3d< double >  pn,
double  feps,
double  xeps 
)

find the zero crossing point by bisection between positive point pp and negative point pn.

Stops searching when $||p_p-p_n|| < x_{eps}$ or $|f(p_m)| < f_{eps}$

Stops searching when $||pp-pn|| < xeps$ or $|f(pm)| < feps$

Definition at line 785 of file imesh_imls_surface.cxx.

bool snap_to_surface ( const imesh_imls_surface f,
vgl_point_3d< double > &  p,
double  step,
double  eps 
)

Move the point p along the gradient direction until reaching a zero crossing of f (within eps).

Return true if successful

Definition at line 817 of file imesh_imls_surface.cxx.

bool snap_to_surface ( const imesh_imls_surface f,
vgl_vector_3d< double >  dir,
vgl_point_3d< double > &  p,
double  step,
double  eps 
)

Move the point p along direction dir until reaching a zero crossing of f (within eps).

Return true if successful

Definition at line 936 of file imesh_imls_surface.cxx.

bool snap_to_surface_with_normal ( const imesh_imls_surface f,
vgl_point_3d< double > &  p,
vgl_vector_3d< double >  n,
double  step,
double  eps 
)

Move the point p to minimize (f^2 + (n*f' - 1)^2)/f'*f' a zero crossing of f (within eps).

Return true if successful

Move the point p to minimize (f^2 + (n*f' - 1)^2)/f'*f' a zero crossing of f (within eps).

Return true if successful

Definition at line 890 of file imesh_imls_surface.cxx.