Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Is it possible to Arrangement with CGAL::Simple_cartesian<float> kernel?

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Is it possible to Arrangement with CGAL::Simple_cartesian<float> kernel?


Chronological Thread 
  • From: Efi Fogel <>
  • To:
  • Subject: Re: [cgal-discuss] Is it possible to Arrangement with CGAL::Simple_cartesian<float> kernel?
  • Date: Mon, 25 Jul 2022 18:48:00 +0300
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-data: A9a23:7VGRb6+5bokSJlYrVh9kDrUDrniTJUtcMsCJ2f8bNWPcYEJGY0x3z WAYDT+HOa2DYmX0KdkgPtvn8kIBuJTQnYA3QQFrqiBEQiMRo6IpJ/zJdxaqZ3v6wu7rFR88s Z1GMrEsCOhuExcwcz/0auCJQUFUjP3OHvymYAL9EngZqTVMEU/Nsjo+3b9i6mJUqYLhWVnV5 omv+5e31GKNglaYDEpEs8pvlzs05JweiBtA1rDpTa0jUPf2zhH5PbpHTU2DByOQrrp8QoZWc 93+IISRpQs1yfuC5uSNyd4XemVSKlLb0JPnZnB+A8BOiTAazsA+PzpS2Pc0MS9qZzu1c99Z6 dVSucy5ZycQbrTFl8tECVp/SQc9IvgTkFPHCSDXXc27ykTHdz7ryqwrAh1qe4If/elzDCdF8 vlwxDIlNEjSwbLrhuvlEq8w2qzPL+GzVG8bknxuzD/eAvsiaZ/GSqTOo9Rf2V/cg+gSQ6aCO 5tCNlKDajz8PjB0EQk0VKkBv9yxgSihbjBX7wqa8P9fD2/7lVQtitABKuH9cdODQYBZn12Tu 3nd13/oBwkTct2Z0zuMtHy27tIjhgv+UYMWUbqxr7tk3AHVyWsUBxkbE1C8pJFVl3JSRfp+K 1MYqiMAjZFi7UWkYYCnHDrihj2b60t0t8VrL8U27wSEy6zx6gmfB3QZQjMpVDDAnJ9pLdDN/ g/Z9+4FFQCDo5XOFi3Arub8QSeafHlKfTVbNEfoWCNcu4G7yLzfmC4jWTqKLUJYptj8GDW1x DnT6SZi2/MciskE06j99lfC695NmnQrZl5ojuk0djj/hu+cWGJDT9LwgbQ8xagbRLt1tnHb4 BA5dzG2tYji962lmi2XW/kqF7q0/fuDOzC0qQcxQsl/p2vxoSP5Jdo4DNRCyKFBYplsldjBM B+7hO+tzMI70IaCNvIoP9LpUazGM4C5RYS8CZg4keaikrAoLFPdlM2fTUGX2G/pnSARfVIXa P+mnTKXJS9CU8xPlWLoL89EiOND7n1vnQv7GMGgpzz6gOr2TCDPFd8tbgDVBshnt/Psnekg2 4wAXyd8404PDrOWj+i+2dJ7EG3m2lBhXMiu9ZYJJ7HSSuekcUl4Y8LsLXoaU9QNt8xoei3gp xlRg2dUlwjyg2PpMwKPZiwxYb/jR8ctoncyPChqNlGtgiBxbYGq5aYZVp02Ybh3rLw5naAoF 6EIK5eaH/BCajXb4DBCP5TwqYpVch701w+DOiySZicyIsx7TAvT9964JQbirXFcDie+ucYkj aen0wfXHcgKSwh4XZTZbfuuyxW6un1EwLB+WE7BI99yfkTw8dgye3ah0KNve8xVcEfN3DqX0 QqSECw0n+iVrt9n6sTNiICFs5ytTLlzE09cKG/RsuS7OCzcyWy8mNMSXeuNewfdY2P64qCVY +tYkqPnO/odkVcW6odxHuo5za864Nez9bZWwh4+RyfOZlWvT7RpezyIgZUJuapKybtU/wCxX xvXqNVdPLyIPuLjEUIQdFV5NLXdjalMl2mA9+kxLWX7+DRzoOiNX3JUMkTekydaNrZ0bN4oz LtzosIQ8ADj2BMmPszc1XJR/mWIa3sJCuAp6s1cD4jshQ4mjFpFZMWEWCPx5ZiObfRKM1Urc mDI3vuc3+wEyxqQaWc3GFjMwfFZ2cYEtidMwQJQPF+OgNfE2qI60RA5He7bleiJIsirEt6fO 1SH82VwLKSKujBh3Y1NAzzqFAZGCxmUvEf2zjPlUYEfo1aADgTwwK8VYI5hP3z1N0pTezFa+ PeTz2ONvfPCYpTqxiVrMaJ6g6WLcDGynzEuXOioGs2EG98xZj+NbmpCo4YXg0OPPP7dT3Era QWnECicpEE72eMtT3UHNrSn
  • Ironport-hdrordr: A9a23:ZPs47q4w72FqaZ139APXwPHXdLJyesId70hD6qkRc20tTiX8ra qTdZsgpHrJYVoqKRMdcJW7Scq9qBDnlKKdg7NhWYtKNTOO0ACVxcNZjbcKqAeQfBEWmNQts5 uIsJITNDQzNzVHZArBjzVQ2uxP/OW6
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: XZb/Cv2fD1eftz5e7U9kxG0cxnjPy6K/4pCIUDyb3g/U9cdL7pua2/LdQbkeS5exaoC0e8HlQQ qhUeEC26jMo9igX64UKEzc8Q2YpGoIeWuTjvdm+BuJqaPzem7F06YEnexqL/nMIZD5zAwF6dDa Z8AWRK3hyhbAte4s+5ieXd9qDnW33uTEiOORPLMf0bivzrG4xVMnrPkckAj72kTbsMYYjmuBdp gzwTG3ENspzW2m1GSJW3wh8KzGCtaOK6a3xhpZ02Gyps1kv91w4ZOK7ApQK+FnBXa7FNwaR1y3 5lAc7hRd31+R65tJIsqrmARl

Hi Shen,

The entire CGAL library, and not only the "2D Arrangement" package of CGAL, follows the Exact Geometric Computation (EGC) paradigm.
EGC ensures robust computation, while only using sufficient precision. Sometimes though high precision is required.
The high precision is required for robustness (and not necessarily for accuracy).

Now, let's assume that you do not take the risk of using a limited precision floating point number type.
Indeed you need to convert the limited precision coordinates and coefficients to the high-precision number type used.
You can reduce the number of bits and perhaps expedite the computation a bit by multiplying your real number by a certain factor, say 1000, cast to an integer, and divide back by 1000:

using Kernel = CGAL::Exact_predicates_exact_construction_kernel;
using FT = Kernel::FT;
using Tr = CGAL::Fraction_traits<FT>;
FT fx(Tr::Compose()(static_cast<int>(x * 1000), 1000));

Observe that those kinds of tricks may alter the topology, which is undesired.

Cheers,
Efi
   ____  _        ____             _
  /_____/_) o    /__________  __  //
 (____ (   (    (    (_/ (_/-(-'_(/
                         _/




On Mon, 25 Jul 2022 at 17:32, ShenCiao <> wrote:

Hi


I'm working on a 2D computer graphics project and need for Arrangement moduleThe project needs to construct arrangement objects from float precision polylines. (The project link if you are interested in).


But it seems that the whole arrangement module is constructed on the assumption of need for high precision. I haven't find a geometry trait support for floating-point number. As the document of CGAL::Arr_segment_traits_2 written

While selecting an inexact kernel when developing a program usually leads to shorter running times, it causes robustness problems in most cases, and thus renders the program useless

And the Arr_segment_traits_2 is the modal of ArrangementTraits_2. I would think that every geometry traits are the modal of ArrangementTraits_2 and do not support floating point construction.


Well, it is ok to cast floating-point number to higher precision but it is not that optimal for performance and user experience in my project.


Is it possible to make a geometry trait myself that lets the whole arrangement module support floating-point construction? If it is possible, I would appreciate if I could receive more guidance and help from you gentlemen.


Thanks

Shen Ciao.




--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://sympa.inria.fr/sympa/info/cgal-discuss




Archive powered by MHonArc 2.6.19+.

Top of Page