31 : fastEnvelope::FastEnvelope::FastEnvelope() {};
34 const std::vector<Eigen::Vector3d>& m_ver,
35 const std::vector<Eigen::Vector3i>& m_faces,
38 fastEnvelope::FastEnvelope::init(m_ver, m_faces, eps);
40 bool is_outside(
const std::array<Eigen::Vector3d, 3>& tris)
const
42 return fastEnvelope::FastEnvelope::is_outside(tris);
44 bool is_outside(
const Eigen::Vector3d& pts)
const
46 return fastEnvelope::FastEnvelope::is_outside(pts);
64 enum class Kind { Uninitialized, Triangles3d, Edges3d, Edges2d };
67 : use_exact(exact) {};
97 double sampling_dist = 1e-3;
98 bool use_exact =
false;
115 const std::vector<Eigen::Vector3d>& m_ver,
116 const std::vector<Eigen::Vector3i>& m_faces,
119 const std::vector<Eigen::Vector3d>& m_ver,
120 const std::vector<Eigen::Vector2i>& m_edges,
123 const std::vector<Eigen::Vector2d>& m_ver,
124 const std::vector<Eigen::Vector2i>& m_edges,
137 void init(
const Eigen::MatrixXd& V,
const Eigen::MatrixXi& F,
const double eps);
138 bool is_outside(
const std::array<Eigen::Vector3d, 3>& tris)
const;
139 bool is_outside(
const std::array<Eigen::Vector3d, 2>& edge)
const;
148 virtual bool is_outside(
const std::array<Eigen::Vector2d, 2>& edge)
const;
149 bool is_outside(
const Eigen::Vector3d& pts)
const;
150 virtual bool is_outside(
const Eigen::Vector2d& pts)
const;
151 double nearest_point(
const Eigen::Vector3d& pts, Eigen::Vector3d& result)
const;
152 double nearest_point(
const Eigen::Vector2d& pts, Eigen::Vector2d& result)
const;
165 const Eigen::Vector2d& p,
166 Eigen::Vector2d& result,
168 Eigen::Vector2d& seg_normal,
169 int& feature_id)
const;
179 const Eigen::Vector3d& p,
180 Eigen::Vector3d& result,
182 Eigen::Vector3d& dir,
183 long long& feature_id)
const;
184 bool initialized() {
return m_bvh !=
nullptr; };
186 Kind kind()
const {
return m_kind; }
188 double squared_distance(
const Eigen::Vector3d& p)
const;
189 double squared_distance(
const Eigen::Vector2d& p)
const;
194 void require_exact_built(
const char* query)
const;
196 template <
typename VertexList>
198 init_exact_edges(
const VertexList& V,
const std::vector<Eigen::Vector2i>& F,
const double _eps);
200 std::vector<int> geo_vertex_ind;
201 std::vector<int> geo_face_ind;
203 std::vector<Eigen::Vector2d>
m_v2;
204 std::vector<Eigen::Vector2i> m_e2;
205 std::vector<Eigen::Vector3d> m_v3;
206 std::vector<Eigen::Vector3i> m_f3;
207 std::vector<Eigen::Vector2i> m_e3;
208 std::shared_ptr<SimpleBVH::BVH> m_bvh;
215 Kind m_kind = Kind::Uninitialized;
std::vector< Eigen::Vector2d > m_v2
Input copies backing nearest_point_feature (filled by the matching init only).
Definition Envelope.hpp:203
fastEnvelope::FastEnvelope2D exact_envelope_2d
Edges2d only. A separate class upstream, not an overload.
Definition Envelope.hpp:214
double nearest_point_feature(const Eigen::Vector2d &p, Eigen::Vector2d &result, bool &on_corner, Eigen::Vector2d &seg_normal, int &feature_id) const
Definition Envelope.cpp:474