Skip to Content.
Sympa Menu

cgal-discuss - [cgal-discuss] Not caught CGAL::Uncertain_conversion_exception for CGAL::intersection()

Subject: CGAL users discussion list

List archive

[cgal-discuss] Not caught CGAL::Uncertain_conversion_exception for CGAL::intersection()


Chronological Thread 
  • From: Samuel Gundry <>
  • To:
  • Subject: [cgal-discuss] Not caught CGAL::Uncertain_conversion_exception for CGAL::intersection()
  • Date: Mon, 5 Jul 2010 14:41:25 +1000
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=tcRZqJwbfvDx9jBJ8aNGhrLlOnxuSM+yXpgExZdfNWnREalXxn7od/6D8+0jLV884z bpc3eriArqwNQal+28ALbtOg3stItJSzxtksAuxO5xMNket1lGjPejgQyz7YCpQCd0MK tcftUOi/vxqXRm+znhPcKfowUQwDuUIRODjNc=

A CGAL::Uncertain_conversion_exception exception is being thrown but
not caught for the following intersection:

Ray_3 r(Point_3(13.6603, -5, 10), Point_3(60.6218, -8.88178e-016, -35));
const Point_3p_a(38, 90, 0.5);
const Point_3p_b(38, 92, 0.3);
const Point_3p_c(36, 92, 0.3);

Triangle_3 t(p_a, p_b, p_c);
CGAL::Object obj = CGAL::intersection(r, t); // not caught exception



We're using the kernel:
CGAL::Exact_predicates_inexact_constructions_kernel, with MSVC9, CGAL
3.5.1.

Thanks for any help.
Sam

In Quotient.h:
template < typename NT >
struct Split_double
{
void operator()(double d, NT &num, NT &den) const
{
num = NT(d);
den = 1;
}
};

Call stack:
terrain_interaction.exe!std::vector<short,std::allocator<short>
>::insert() + 0x7d bytes C++
terrain_interaction.exe!CGAL::MP_Float::construct_from_builtin_fp_type<double>()
+ 0x1b5 bytes C++
terrain_interaction.exe!CGAL::MP_Float::MP_Float() + 0x46 bytes C++
>
> terrain_interaction.exe!CGAL::Split_double<CGAL::MP_Float>::operator()(double
> d=-35.000000000000000, CGAL::MP_Float & num={...}, CGAL::MP_Float &
> den={...}) Line 65 + 0x11 bytes C++
terrain_interaction.exe!CGAL::Quotient<CGAL::MP_Float>::Quotient<CGAL::MP_Float>(const
double & n=-35.000000000000000) Line 89 C++
terrain_interaction.exe!CGAL::NT_converter<double,CGAL::Quotient<CGAL::MP_Float>
>::operator()(const double & a=-35.000000000000000) Line 39 + 0xc
bytes C++
terrain_interaction.exe!CGAL::Cartesian_converter<CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> >
>,CGAL::Simple_cartesian<CGAL::Quotient<CGAL::MP_Float>
>,CGAL::NT_converter<double,CGAL::Quotient<CGAL::MP_Float> >
>::operator()(const
CGAL::Point_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> > >
& a={...}) Line 203 + 0x15 bytes C++
terrain_interaction.exe!CGAL::Cartesian_converter<CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> >
>,CGAL::Simple_cartesian<CGAL::Quotient<CGAL::MP_Float>
>,CGAL::NT_converter<double,CGAL::Quotient<CGAL::MP_Float> >
>::operator()(const
CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> > > &
a={...}) Line 238 + 0x1c bytes C++
terrain_interaction.exe!CGAL::Filtered_predicate<CGAL::CommonKernelFunctors::Do_intersect_3<CGAL::Simple_cartesian<CGAL::Quotient<CGAL::MP_Float>
> >,CGAL::CommonKernelFunctors::Do_intersect_3<CGAL::Simple_cartesian<CGAL::Interval_nt<0>
> >,CGAL::Cartesian_converter<CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> >
>,CGAL::Simple_cartesian<CGAL::Quotient<CGAL::MP_Float>
>,CGAL::NT_converter<double,CGAL::Quotient<CGAL::MP_Float> >
>,CGAL::Cartesian_converter<CGAL::Type_equality_wrapper<CGAL::Cartesian_base_no_ref_count<double,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >,CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> >
>,CGAL::Simple_cartesian<CGAL::Interval_nt<0>
>,CGAL::NT_converter<double,CGAL::Interval_nt<0> >
>,1>::operator()<CGAL::Triangle_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >,CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> >
> >(const
> >CGAL::Triangle_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> > & a1={...}, const
CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> > > &
a2={...}) Line 217 + 0x16 bytes C++
terrain_interaction.exe!CGAL::do_intersect<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >(const
> >CGAL::Triangle_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> > & t={...}, const
CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> > > &
r={...}) Line 309 C++
terrain_interaction.exe!CGAL::CGALi::intersection<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >(const
> >CGAL::Triangle_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> > & t={...}, const
CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> > > &
r={...}, const CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> >
& k={...}) Line 76 + 0xd bytes C++
terrain_interaction.exe!CGAL::CommonKernelFunctors::Intersect_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >::operator()<CGAL::Triangle_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >,CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> >
> >(const
> >CGAL::Triangle_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> > & t1={...}, const
CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double> > > &
t2={...}) Line 2358 + 0x3a bytes C++
terrain_interaction.exe!CGAL::intersection<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> >(const CGAL::Ray_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> > & r={...}, const
CGAL::Triangle_3<CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>
> > & t={...}) Line 161 + 0x19 bytes C++


  • [cgal-discuss] Not caught CGAL::Uncertain_conversion_exception for CGAL::intersection(), Samuel Gundry, 07/05/2010

Archive powered by MHonArc 2.6.16.

Top of Page