37 #ifndef RFC_OVERLAY_PRIMITIVES_H
38 #define RFC_OVERLAY_PRIMITIVES_H
74 do { ++
i; }
while ( (h=h->
next())!= e);
119 for (
unsigned int i=0,
s=
hs.size();
i<
s; ++
i)
123 for (
unsigned int i=0,
s=
hs.size();
i<
s; ++
i)
138 std::vector< const Halfedge*>
hs;
178 Real *c2,
bool revsersed)
const;
191 Real eps_np=-1.)
const;
199 const Real eps_p)
const;
206 const Real eps_p)
const;
265 double cosa = J[0]*J[1] /
std::sqrt((J[0]*J[0])*(J[1]*J[1]));
266 if ( cosa>1) cosa = 1;
else if ( cosa<-1) cosa = -1;
290 {
return ( x ==
Real(0.)) ? 0 : ( x >
Real(0.) ? 1 : -1); }
306 #endif // RFC_OVERLAY_PRIMITIVES_H
Vector_3 get_tangent(const Halfedge *b, Real a) const
Halfedge_overlay Halfedge
bool intersect(const Halfedge *b, const Halfedge *g, Real start, Real *c1, Real *c2, Real *dir, Real *dir_match, bool is_opposite, Real eps_e) const
int sign(const Real x) const
Real project_green_feature(const Vector_3 &n, const Vector_3 &t, const Point_3 &p1, const Point_3 &p2, const Point_3 &q, const Real eps_p) const
Vertex_overlay * destination()
Self & operator=(const Self &)
SURF::Point_2< float > Point_2S
const Point_3 & operator[](Size i) const
Vector_3 get_projdir(const Halfedge *b, Real a) const
Point_set(const Halfedge *h, Size)
This class encapsulate a halfedge over a window manifold.
Size count_edges(const Halfedge *e) const
SURF::Generic_element_2 Generic_element
Real normalmatch(const Halfedge *b, const Halfedge *g) const
const RFC_Pane_overlay * pane() const
Vector_3 get_face_normal(const Halfedge *b, const Point_2 &nc, int scheme=0) const
Size size_of_edges() const
Vertex_overlay * origin()
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Real abs(const Real x) const
Point_set(const Halfedge *h)
const Point_3 & get_point(int id) const
void snap_blue_ridge_edge(const Halfedge *b, const Halfedge *g, Real *cb, Real *cg, Parent_type *t, Real tol=0.1) const
#define RFC_END_NAME_SPACE
Halfedge_overlay Halfedge
Halfedge_overlay Halfedge
const Point & point() const
Real project_blue_feature(const Vector_3 &n1, const Vector_3 &n2, const Vector_3 &t1, const Vector_3 &t2, const Point_3 &q1, const Point_3 &q2, const Point_3 &p, const Real eps_p) const
#define RFC_BEGIN_NAME_SPACE
static Vector_3 cross_product(const Vector_3 &v, const Vector_3 &w)
void snap_blue_ridge_vertex(const Vertex *v, Halfedge **g, Parent_type *t, Point_2 *nc, Real tol=0.1) const
bool project_onto_element(const Point_3 &p, Halfedge **g, Parent_type *pt, Vector_3 dir, Point_2 *nc_out, const Real eps_p, Real eps_np=-1.) const
Point_3 get_point(const Halfedge *b, const Point_2 &nc) const
Size size_of_nodes() const
std::vector< const Halfedge * > hs
Overlay_primitives(Real ec=1.e-9, Real ep=1.e-6, Real ee=1.e-3)
Halfedge_overlay * next()
const Value & operator[](Size i) const
Real squared_norm(const Vector_3 &v) const
Size size_of_nodes() const
int operator[](Size i) const
Size size_of_edges() const
const RFC_Pane_overlay * _pane
Normal_set(const Halfedge *h)
Halfedge_overlay Halfedge
Point_3 get_point(const Halfedge *b, const Point_2S &nc) const
Point_3 get_point(const Halfedge *b, Real a) const
CImg< _cimg_Tfloat > acos(const CImg< T > &instance)
Some basic geometric data types.
std::vector< int > _nodes
Size size_of_edges() const
Normal_set(const Halfedge *h, Size)
Vector_3 & get_normal(int v)
Size size_of_nodes() const