8#ifndef IGL_SIGNED_DISTANCE_H
9#define IGL_SIGNED_DISTANCE_H
62 const Eigen::MatrixBase<DerivedP> & P,
63 const Eigen::MatrixBase<DerivedV> & V,
64 const Eigen::MatrixBase<DerivedF> & F,
66 const typename DerivedV::Scalar lower_bound,
67 const typename DerivedV::Scalar upper_bound,
68 Eigen::PlainObjectBase<DerivedS> & S,
69 Eigen::PlainObjectBase<DerivedI> & I,
70 Eigen::PlainObjectBase<DerivedC> & C,
71 Eigen::PlainObjectBase<DerivedN> & N);
82 const Eigen::MatrixBase<DerivedP> & P,
83 const Eigen::MatrixBase<DerivedV> & V,
84 const Eigen::MatrixBase<DerivedF> & F,
86 Eigen::PlainObjectBase<DerivedS> & S,
87 Eigen::PlainObjectBase<DerivedI> & I,
88 Eigen::PlainObjectBase<DerivedC> & C,
89 Eigen::PlainObjectBase<DerivedN> & N);
109 typename DerivedEMAP,
113 const Eigen::MatrixBase<DerivedV> & V,
114 const Eigen::MatrixBase<DerivedF> & F,
115 const Eigen::MatrixBase<DerivedFN> & FN,
116 const Eigen::MatrixBase<DerivedVN> & VN,
117 const Eigen::MatrixBase<DerivedEN> & EN,
118 const Eigen::MatrixBase<DerivedEMAP> & EMAP,
119 const Eigen::MatrixBase<Derivedq> & q);
130 typename DerivedEMAP,
136 const Eigen::MatrixBase<DerivedP> & P,
137 const Eigen::MatrixBase<DerivedV> & V,
138 const Eigen::MatrixBase<DerivedF> & F,
140 const Eigen::MatrixBase<DerivedFN> & FN,
141 const Eigen::MatrixBase<DerivedVN> & VN,
142 const Eigen::MatrixBase<DerivedEN> & EN,
143 const Eigen::MatrixBase<DerivedEMAP> & EMAP,
144 Eigen::PlainObjectBase<DerivedS> & S,
145 Eigen::PlainObjectBase<DerivedI> & I,
146 Eigen::PlainObjectBase<DerivedC> & C,
147 Eigen::PlainObjectBase<DerivedN> & N);
163 typename DerivedEMAP,
170 const Eigen::MatrixBase<DerivedV> & V,
171 const Eigen::MatrixBase<DerivedF> & F,
172 const Eigen::MatrixBase<DerivedFN> & FN,
173 const Eigen::MatrixBase<DerivedVN> & VN,
174 const Eigen::MatrixBase<DerivedEN> & EN,
175 const Eigen::MatrixBase<DerivedEMAP> & EMAP,
176 const Eigen::MatrixBase<Derivedq> & q,
180 Eigen::PlainObjectBase<Derivedc> & c,
181 Eigen::PlainObjectBase<Derivedn> & n);
194 const Eigen::MatrixBase<DerivedV> & V,
195 const Eigen::MatrixBase<DerivedE> & E,
196 const Eigen::MatrixBase<DerivedEN> & EN,
197 const Eigen::MatrixBase<DerivedVN> & VN,
198 const Eigen::MatrixBase<Derivedq> & q,
202 Eigen::PlainObjectBase<Derivedc> & c,
203 Eigen::PlainObjectBase<Derivedn> & n);
218 const Eigen::MatrixBase<DerivedV> & V,
219 const Eigen::MatrixBase<DerivedF> & F,
221 const Eigen::MatrixBase<Derivedq> & q);
235 const Eigen::MatrixBase<DerivedV> & V,
236 const Eigen::MatrixBase<DerivedF> & F,
238 const Eigen::MatrixBase<Derivedq> & q,
242 Eigen::PlainObjectBase<Derivedc> & c);
252 const Eigen::MatrixBase<DerivedV> & V,
253 const Eigen::MatrixBase<DerivedF> & F,
254 const Eigen::MatrixBase<Derivedq> & q,
258 Eigen::PlainObjectBase<Derivedc> & c);
284 const Eigen::MatrixBase<DerivedP> & P,
285 const Eigen::MatrixBase<DerivedV> & V,
286 const Eigen::MatrixBase<DerivedF> & F,
288 const igl::FastWindingNumberBVH & fwn_bvh,
289 Eigen::PlainObjectBase<DerivedS> & S
307 const Eigen::MatrixBase<Derivedq> & q,
308 const Eigen::MatrixBase<DerivedV> & V,
309 const Eigen::MatrixBase<DerivedF> & F,
311 const igl::FastWindingNumberBVH & fwn_bvh
315#ifndef IGL_STATIC_LIBRARY
316# include "signed_distance.cpp"
Implementation of semi-general purpose axis-aligned bounding box hierarchy.
Definition AABB.h:30
Class for building an AABB tree to implement the divide and conquer algorithm described in [Jacobson ...
Definition WindingNumberAABB.h:26
#define IGL_INLINE
Definition igl_inline.h:15
void signed_distance(const Eigen::MatrixBase< DerivedP > &P, const Eigen::MatrixBase< DerivedV > &V, const Eigen::MatrixBase< DerivedF > &F, const SignedDistanceType sign_type, const typename DerivedV::Scalar lower_bound, const typename DerivedV::Scalar upper_bound, Eigen::PlainObjectBase< DerivedS > &S, Eigen::PlainObjectBase< DerivedI > &I, Eigen::PlainObjectBase< DerivedC > &C, Eigen::PlainObjectBase< DerivedN > &N)
Computes signed distance to a mesh.
DerivedV::Scalar signed_distance_pseudonormal(const AABB< DerivedV, 3 > &tree, const Eigen::MatrixBase< DerivedV > &V, const Eigen::MatrixBase< DerivedF > &F, const Eigen::MatrixBase< DerivedFN > &FN, const Eigen::MatrixBase< DerivedVN > &VN, const Eigen::MatrixBase< DerivedEN > &EN, const Eigen::MatrixBase< DerivedEMAP > &EMAP, const Eigen::MatrixBase< Derivedq > &q)
Computes signed distance to mesh using pseudonormal with precomputed AABB tree and edge/vertice norma...
DerivedV::Scalar signed_distance_winding_number(const AABB< DerivedV, 3 > &tree, const Eigen::MatrixBase< DerivedV > &V, const Eigen::MatrixBase< DerivedF > &F, const igl::WindingNumberAABB< Derivedq, DerivedV, DerivedF > &hier, const Eigen::MatrixBase< Derivedq > &q)
Computes signed distance to mesh using winding number with precomputed AABB.
void signed_distance_fast_winding_number(const Eigen::MatrixBase< DerivedP > &P, const Eigen::MatrixBase< DerivedV > &V, const Eigen::MatrixBase< DerivedF > &F, const AABB< DerivedV, 3 > &tree, const igl::FastWindingNumberBVH &fwn_bvh, Eigen::PlainObjectBase< DerivedS > &S)
Calculates signed distance at query points P, using fast winding number for sign.
SignedDistanceType
Types of signing a distance field.
Definition signed_distance.h:21
@ SIGNED_DISTANCE_TYPE_WINDING_NUMBER
Use winding number [Jacobson, Kavan Sorking-Hornug 2013].
Definition signed_distance.h:25
@ SIGNED_DISTANCE_TYPE_UNSIGNED
Unsigned (absolute value)
Definition signed_distance.h:29
@ SIGNED_DISTANCE_TYPE_DEFAULT
Default.
Definition signed_distance.h:27
@ NUM_SIGNED_DISTANCE_TYPE
Total number of signed distance types.
Definition signed_distance.h:33
@ SIGNED_DISTANCE_TYPE_FAST_WINDING_NUMBER
Use Fast winding number [Barill, Dickson, Schmidt, Levin, Jacobson 2018].
Definition signed_distance.h:31
@ SIGNED_DISTANCE_TYPE_PSEUDONORMAL
Use fast pseudo-normal test [Bærentzen & Aanæs 2005].
Definition signed_distance.h:23