mirror of https://github.com/CGAL/cgal
Use to_double to make it work with Epec
This commit is contained in:
parent
0832d01b45
commit
2c54acb056
|
|
@ -48,14 +48,14 @@ struct Cotangent_value_Meyer_impl
|
||||||
Vector a = get(ppmap, v0) - get(ppmap, v1);
|
Vector a = get(ppmap, v0) - get(ppmap, v1);
|
||||||
Vector b = get(ppmap, v2) - get(ppmap, v1);
|
Vector b = get(ppmap, v2) - get(ppmap, v1);
|
||||||
|
|
||||||
double dot_ab = a*b;
|
double dot_ab = to_double(a*b);
|
||||||
// rewritten for safer fp arithmetic
|
// rewritten for safer fp arithmetic
|
||||||
//double dot_aa = a.squared_length();
|
//double dot_aa = a.squared_length();
|
||||||
//double dot_bb = b.squared_length();
|
//double dot_bb = b.squared_length();
|
||||||
//double divider = CGAL::sqrt( dot_aa * dot_bb - dot_ab * dot_ab );
|
//double divider = CGAL::sqrt( dot_aa * dot_bb - dot_ab * dot_ab );
|
||||||
|
|
||||||
Vector cross_ab = CGAL::cross_product(a, b);
|
Vector cross_ab = CGAL::cross_product(a, b);
|
||||||
double divider = CGAL::sqrt(cross_ab*cross_ab);
|
double divider = CGAL::sqrt(to_double(cross_ab*cross_ab));
|
||||||
|
|
||||||
if(divider == 0 /*|| divider != divider*/)
|
if(divider == 0 /*|| divider != divider*/)
|
||||||
{
|
{
|
||||||
|
|
@ -309,12 +309,12 @@ public:
|
||||||
double cot_v1 = CotangentValue::operator()(v_op, v1, v0);
|
double cot_v1 = CotangentValue::operator()(v_op, v1, v0);
|
||||||
double cot_v_op = CotangentValue::operator()(v0, v_op, v1);
|
double cot_v_op = CotangentValue::operator()(v0, v_op, v1);
|
||||||
|
|
||||||
double term1 = cot_v1 * (v_op_p - v0_p).squared_length();
|
double term1 = cot_v1 * to_double((v_op_p - v0_p).squared_length());
|
||||||
double term2 = cot_v_op * (v1_p - v0_p).squared_length();
|
double term2 = cot_v_op * to_double((v1_p - v0_p).squared_length());
|
||||||
voronoi_area += (1.0 / 8.0) * (term1 + term2);
|
voronoi_area += (1.0 / 8.0) * (term1 + term2);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
double area_t = CGAL::sqrt(squared_area(v0_p, v1_p, v_op_p));
|
double area_t = CGAL::sqrt(to_double(squared_area(v0_p, v1_p, v_op_p)));
|
||||||
if(angle0 == CGAL::OBTUSE) {
|
if(angle0 == CGAL::OBTUSE) {
|
||||||
voronoi_area += area_t / 2.0;
|
voronoi_area += area_t / 2.0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -247,20 +247,20 @@ private:
|
||||||
// check whether the edge is border
|
// check whether the edge is border
|
||||||
if( (v0 + 1 == v1 || (v0 == n-1 && v1 == 0) ) && !Q.empty() ) {
|
if( (v0 + 1 == v1 || (v0 == n-1 && v1 == 0) ) && !Q.empty() ) {
|
||||||
angle = 180 - CGAL::abs(
|
angle = 180 - CGAL::abs(
|
||||||
CGAL::Mesh_3::dihedral_angle(P[v0],P[v1],P[v_other],Q[v0]) );
|
to_double(CGAL::Mesh_3::dihedral_angle(P[v0],P[v1],P[v_other],Q[v0])) );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(e == 2) { continue; }
|
if(e == 2) { continue; }
|
||||||
if(lambda.get(v0, v1) != -1){
|
if(lambda.get(v0, v1) != -1){
|
||||||
const Point_3& p01 = P[lambda.get(v0, v1)];
|
const Point_3& p01 = P[lambda.get(v0, v1)];
|
||||||
angle = 180 - CGAL::abs(
|
angle = 180 - CGAL::abs(
|
||||||
CGAL::Mesh_3::dihedral_angle(P[v0],P[v1],P[v_other],p01) );
|
to_double(CGAL::Mesh_3::dihedral_angle(P[v0],P[v1],P[v_other],p01)) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ang_max = (std::max)(ang_max, angle);
|
ang_max = (std::max)(ang_max, angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
w = std::make_pair(ang_max, CGAL::sqrt(CGAL::squared_area(P[i],P[j],P[k])));
|
w = std::make_pair(ang_max, CGAL::sqrt(to_double(CGAL::squared_area(P[i],P[j],P[k]))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -868,8 +868,8 @@ namespace internal {
|
||||||
{
|
{
|
||||||
vertex_descriptor ph0 = source(border_halfedges[0], mesh_);
|
vertex_descriptor ph0 = source(border_halfedges[0], mesh_);
|
||||||
vertex_descriptor ph1 = source(border_halfedges[1], mesh_);
|
vertex_descriptor ph1 = source(border_halfedges[1], mesh_);
|
||||||
double dot = Vector_3(get(vpmap_, v), get(vpmap_, ph0))
|
double dot = to_double(Vector_3(get(vpmap_, v), get(vpmap_, ph0))
|
||||||
* Vector_3(get(vpmap_, v), get(vpmap_, ph1));
|
* Vector_3(get(vpmap_, v), get(vpmap_, ph1)));
|
||||||
//check squared cosine is < 0.25 (~120 degrees)
|
//check squared cosine is < 0.25 (~120 degrees)
|
||||||
if (0.25 < dot / (sqlength(border_halfedges[0]) * sqlength(border_halfedges[0])))
|
if (0.25 < dot / (sqlength(border_halfedges[0]) * sqlength(border_halfedges[0])))
|
||||||
barycenters[v] = CGAL::midpoint(midpoint(border_halfedges[0]),
|
barycenters[v] = CGAL::midpoint(midpoint(border_halfedges[0]),
|
||||||
|
|
@ -936,17 +936,13 @@ namespace internal {
|
||||||
tree_ptr_->traits(),
|
tree_ptr_->traits(),
|
||||||
pid_pmap
|
pid_pmap
|
||||||
);
|
);
|
||||||
|
|
||||||
tree_ptr_->traversal(get(vpmap_, v), projection_traits);
|
tree_ptr_->traversal(get(vpmap_, v), projection_traits);
|
||||||
CGAL_assertion(projection_traits.found());
|
CGAL_assertion(projection_traits.found());
|
||||||
|
|
||||||
Point proj = projection_traits.closest_point();
|
Point proj = projection_traits.closest_point();
|
||||||
put(vpmap_, v, proj);
|
put(vpmap_, v, proj);
|
||||||
}
|
}
|
||||||
|
|
||||||
CGAL_assertion(is_valid(mesh_));
|
CGAL_assertion(is_valid(mesh_));
|
||||||
CGAL_assertion(is_triangle_mesh(mesh_));
|
CGAL_assertion(is_triangle_mesh(mesh_));
|
||||||
|
|
||||||
#ifdef CGAL_PMP_REMESHING_DEBUG
|
#ifdef CGAL_PMP_REMESHING_DEBUG
|
||||||
debug_self_intersections();
|
debug_self_intersections();
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1013,7 +1009,7 @@ private:
|
||||||
double sqlength(const vertex_descriptor& v1,
|
double sqlength(const vertex_descriptor& v1,
|
||||||
const vertex_descriptor& v2) const
|
const vertex_descriptor& v2) const
|
||||||
{
|
{
|
||||||
return CGAL::squared_distance(get(vpmap_, v1), get(vpmap_, v2));
|
return to_double(CGAL::squared_distance(get(vpmap_, v1), get(vpmap_, v2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
double sqlength(const halfedge_descriptor& h) const
|
double sqlength(const halfedge_descriptor& h) const
|
||||||
|
|
@ -1668,7 +1664,7 @@ private:
|
||||||
//check all normals have same orientation
|
//check all normals have same orientation
|
||||||
for (std::size_t i = 1; i < normals.size(); ++i)/*start at 1 on purpose*/
|
for (std::size_t i = 1; i < normals.size(); ++i)/*start at 1 on purpose*/
|
||||||
{
|
{
|
||||||
double dot = normals[i - 1] * normals[i];
|
double dot = to_double(normals[i - 1] * normals[i]);
|
||||||
if(dot <= 0.)
|
if(dot <= 0.)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -93,9 +93,9 @@ private:
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
typename boost::property_traits<VertexPointMap>::reference p = ppmap[v];
|
typename boost::property_traits<VertexPointMap>::reference p = ppmap[v];
|
||||||
x += multiplier * - p.x();
|
x += multiplier * - to_double(p.x());
|
||||||
y += multiplier * - p.y();
|
y += multiplier * - to_double(p.y());
|
||||||
z += multiplier * - p.z();
|
z += multiplier * - to_double(p.z());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
|
|
@ -113,9 +113,9 @@ private:
|
||||||
vertex_descriptor vk = target(prev(halfedge(fd,pmesh),pmesh),pmesh);
|
vertex_descriptor vk = target(prev(halfedge(fd,pmesh),pmesh),pmesh);
|
||||||
Point_3 c = CGAL::centroid(vpmap[vi], vpmap[vj], vpmap[vk]);
|
Point_3 c = CGAL::centroid(vpmap[vi], vpmap[vj], vpmap[vk]);
|
||||||
double sac = (scale_attribute[vi] + scale_attribute[vj] + scale_attribute[vk])/3.0;
|
double sac = (scale_attribute[vi] + scale_attribute[vj] + scale_attribute[vk])/3.0;
|
||||||
double dist_c_vi = CGAL::sqrt(CGAL::squared_distance(c,vpmap[vi]));
|
double dist_c_vi = CGAL::sqrt(to_double(CGAL::squared_distance(c,vpmap[vi])));
|
||||||
double dist_c_vj = CGAL::sqrt(CGAL::squared_distance(c,vpmap[vj]));
|
double dist_c_vj = CGAL::sqrt(to_double(CGAL::squared_distance(c,vpmap[vj])));
|
||||||
double dist_c_vk = CGAL::sqrt(CGAL::squared_distance(c,vpmap[vk]));
|
double dist_c_vk = CGAL::sqrt(to_double(CGAL::squared_distance(c,vpmap[vk])));
|
||||||
if((alpha * dist_c_vi > sac) &&
|
if((alpha * dist_c_vi > sac) &&
|
||||||
(alpha * dist_c_vj > sac) &&
|
(alpha * dist_c_vj > sac) &&
|
||||||
(alpha * dist_c_vk > sac) &&
|
(alpha * dist_c_vk > sac) &&
|
||||||
|
|
@ -218,7 +218,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
const Point_3& vq = vpmap[target(opposite(*circ,pmesh),pmesh)];
|
const Point_3& vq = vpmap[target(opposite(*circ,pmesh),pmesh)];
|
||||||
sum += CGAL::sqrt(CGAL::squared_distance(vp, vq));
|
sum += CGAL::sqrt(to_double(CGAL::squared_distance(vp, vq)));
|
||||||
++deg;
|
++deg;
|
||||||
} while(++circ != done);
|
} while(++circ != done);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue