Do not needless lose precision in outer frame computations

This commit is contained in:
Mael Rouxel-Labbé 2023-02-09 23:28:52 +01:00
parent c25c407b81
commit 7449c7419a
3 changed files with 19 additions and 20 deletions

View File

@ -166,16 +166,15 @@ create_partial_exterior_straight_skeleton_2 ( FT const& aMaxOffset
if ( margin )
{
double lm = CGAL::to_double(*margin);
Bbox_2 bbox = bbox_2(aVerticesBegin, aVerticesEnd);
const IFT lm = *margin;
const Bbox_2 bbox = bbox_2(aVerticesBegin, aVerticesEnd);
FT fxmin = bbox.xmin() - lm ;
FT fxmax = bbox.xmax() + lm ;
FT fymin = bbox.ymin() - lm ;
FT fymax = bbox.ymax() + lm ;
const IFT fxmin = IFT(bbox.xmin()) - lm ;
const IFT fxmax = IFT(bbox.xmax()) + lm ;
const IFT fymin = IFT(bbox.ymin()) - lm ;
const IFT fymax = IFT(bbox.ymax()) + lm ;
Point_2 frame[4] ;
frame[0] = Point_2(fxmin,fymin) ;
frame[1] = Point_2(fxmax,fymin) ;
frame[2] = Point_2(fxmax,fymax) ;

View File

@ -165,16 +165,15 @@ create_exterior_straight_skeleton_2 ( FT const& aMaxOffset
if ( margin )
{
const double lm = CGAL::to_double(*margin);
Bbox_2 bbox = bbox_2(aVerticesBegin, aVerticesEnd);
const IFT lm = *margin;
const Bbox_2 bbox = bbox_2(aVerticesBegin, aVerticesEnd);
FT fxmin = bbox.xmin() - lm ;
FT fxmax = bbox.xmax() + lm ;
FT fymin = bbox.ymin() - lm ;
FT fymax = bbox.ymax() + lm ;
const IFT fxmin = IFT(bbox.xmin()) - lm ;
const IFT fxmax = IFT(bbox.xmax()) + lm ;
const IFT fymin = IFT(bbox.ymin()) - lm ;
const IFT fymax = IFT(bbox.ymax()) + lm ;
Point_2 frame[4] ;
frame[0] = Point_2(fxmin,fymin) ;
frame[1] = Point_2(fxmax,fymin) ;
frame[2] = Point_2(fxmax,fymax) ;

View File

@ -182,17 +182,18 @@ create_exterior_weighted_straight_skeleton_2(const FT& max_offset,
// converter stuff that is done in `create_partial_exterior_straight_skeleton_2`?).
boost::optional<IFT> margin = compute_outer_frame_margin(vertices_begin,
vertices_end,
weights[0],
offset);
if(margin)
{
const double lm = CGAL::to_double(*margin);
Bbox_2 bbox = bbox_2(vertices_begin, vertices_end);
const IFT lm = *margin;
const Bbox_2 bbox = bbox_2(vertices_begin, vertices_end);
FT fxmin = bbox.xmin() - lm;
FT fxmax = bbox.xmax() + lm;
FT fymin = bbox.ymin() - lm;
FT fymax = bbox.ymax() + lm;
const IFT fxmin = IFT(bbox.xmin()) - lm;
const IFT fxmax = IFT(bbox.xmax()) + lm;
const IFT fymin = IFT(bbox.ymin()) - lm;
const IFT fymax = IFT(bbox.ymax()) + lm;
Point_2 frame[4];
frame[0] = Point_2(fxmin,fymin);