Subject: CGAL users discussion list
List archive
- From: Myirci <>
- To:
- Subject: Re: [cgal-discuss] straight skeleton anomaly ?
- Date: Tue, 19 Mar 2013 16:05:26 +0100
Hi Sebastien,
Thank you very much for the response. I tried all of the methods you mentioned and they all worked. However, I've an another polygon for which I still think the output is not correct. Could you also check the same code with the polygon I'm sending with this e-mail. I also attached my output. In this polygon the point locations are close to origin and no two points are close to each other.
Thank you again,
Best wishes
Murat
--
Murat Yirci
On Tue, Mar 19, 2013 at 10:53 AM, Sebastien Loriot (GeometryFactory) <> wrote:
I now fully understand what is happening. What is wrong is the output in double.
The kernel used rely on a lazy constructions of the points. In particular, the approximate version of the points (using intervals)
is used to print the point coordinates (by taking the middle of the intervals). If you want this interval to be smaller and more accurate,
you need to evaluate exactly the construction.
Thus calling CGAL::exact(p) in the print_point function before
printing the point produce a better looking solution.
Adding the following code in print_point
typename K::Point_2::Approximate_type pa=CGAL::approx(p);
std::cout << "precision x " << pa.x().sup() - pa.x().inf() << std::endl;
std::cout << "precision y " << pa.y().sup() - pa.y().inf() << std::endl;
you will see that the precision of the incorrectly placed point
is
precision x 10.4218660132028162479400634765625
precision y 4.7394369542598724365234375
which is way larger that the distance between the points.
If you want to avoid exactly evaluating the points when it is
not needed, you can use the interval length printed above to
check when you want to refine the interval.
Note that the two methods I mention in my first email are also
valid alternatives.
Sebastien.
On 03/19/2013 10:12 AM, Sebastien Loriot (GeometryFactory) wrote:
It is indeed a problem bug due to a numerical issue.
This comes from the fact that you have two points that are
closed together while the coordinates of your points are very large.
If you translate the polygon, by doing:
FT dx = CGAL::Gmpq(650950);
FT dy = CGAL::Gmpq(6861560);
Point_2 p(x-dx, y-dy);
you'll see that the result looks better.
I will investigate to see if there is an easy fix and post on the list
when I have an update.
In the meantime, you can either simplify the input polygon (say if an
edge is below a chosen threshold you ignore it) or translate your
polygon close to the origin using a translation with integer
coordinates.
Thanks for the report,
Sebastien.
On 03/17/2013 09:59 PM, Myirci wrote:
Dear all CGAL users,
I've a weird output from CGAL Straight Skeleton. I attached my output
and the simple code to regenerate the output. My OS is Ubuntu 12.10
32-bit and I'm using CGAL 4.1. Could you please check the output? Is
this a bug or am I doing something wrong?
In my analysis, I checked the approximation of the exact numbers to
double by printing the intervals using CGAL::to_interval() for the
skeleton vertices and there seems to be an anomaly for the point S3 (see
the figures). The interval is given as: [(650950.772473049,
650961.1943390622) (6861561.907245005, 6861566.64668196)] for that
point. I think this is the source of the error. Is there a method for
narrowing down the interval?
Thank you for your time and considerations.
Best wishes
--
Murat Yirci
--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss
Murat Yirci
Attachment:
Polygon2.tar.gz
Description: GNU Zip compressed data
Attachment:
ss.png
Description: PNG image
- [cgal-discuss] straight skeleton anomaly ?, Myirci, 03/17/2013
- Re: [cgal-discuss] straight skeleton anomaly ?, Sebastien Loriot (GeometryFactory), 03/19/2013
- Re: [cgal-discuss] straight skeleton anomaly ?, Sebastien Loriot (GeometryFactory), 03/19/2013
- Re: [cgal-discuss] straight skeleton anomaly ?, Myirci, 03/19/2013
- Re: [cgal-discuss] straight skeleton anomaly ?, Sebastien Loriot (GeometryFactory), 03/19/2013
- Re: [cgal-discuss] straight skeleton anomaly ?, Sebastien Loriot (GeometryFactory), 03/19/2013
Archive powered by MHonArc 2.6.18.