Add <RT> to rank as expression templates don't match

This commit is contained in:
Andreas Fabri 2021-03-30 14:28:55 +01:00
parent dbfb7157bb
commit 7ebdd07a4c
2 changed files with 23 additions and 21 deletions

View File

@ -1681,6 +1681,8 @@ inline bool
do_intersect(const Plane_3<R> &plane1, const Plane_3<R> &plane2,
const Plane_3<R> &plane3, const R& r)
{
typedef typename R::RT RT;
if(! is_zero(determinant(plane1.a(), plane1.b(), plane1.c(),
plane2.a(), plane2.b(), plane2.c(),
plane3.a(), plane3.b(), plane3.c()))){
@ -1703,7 +1705,7 @@ do_intersect(const Plane_3<R> &plane1, const Plane_3<R> &plane2,
if(b23 && ((plane2 == plane3)||(plane2 == plane3.opposite() ))) return true;
}
int rd = rank_34(plane1.a(), plane1.b(), plane1.c(), plane1.d(),
int rd = rank_34<RT>(plane1.a(), plane1.b(), plane1.c(), plane1.d(),
plane2.a(), plane2.b(), plane2.c(), plane2.d(),
plane3.a(), plane3.b(), plane3.c(), plane3.d());

View File

@ -50,21 +50,21 @@ int rank_32(const RT& a0, const RT& b0,
{
if (a2==0)
{
return rank_31(b0,b1,b2);
return rank_31<RT>(b0,b1,b2);
}
else
{
return 1 + rank_21(b0, b1);
return 1 + rank_21<RT>(b0, b1);
}
}
else
{
return 1 + rank_21(b0, a1*b2-a2*b1);
return 1 + rank_21<RT>(b0, a1*b2-a2*b1);
}
}
else
{
return 1 + rank_21(a0*b1-a1*b0, a0*b2-a2*b0);
return 1 + rank_21<RT>(a0*b1-a1*b0, a0*b2-a2*b0);
}
}
@ -76,12 +76,12 @@ int rank_22(const RT& a0, const RT& b0,
{
if (a1==0)
{
return rank_21(b0,b1);
return rank_21<RT>(b0,b1);
}
else
return 1 + rank_11(b0);
return 1 + rank_11<RT>(b0);
}
return 1 + rank_11(a0*b1-a1*b0);
return 1 + rank_11<RT>(a0*b1-a1*b0);
}
template <class RT>
@ -95,19 +95,19 @@ int rank_33(const RT& a0, const RT& b0, const RT& c0,
{
if (a2==0)
{
return rank_32(b0, c0, b1, c1, b2, c2);
return rank_32<RT>(b0, c0, b1, c1, b2, c2);
}
else
{
return 1 + rank_22(b0, c0, b1, c1);
return 1 + rank_22<RT>(b0, c0, b1, c1);
}
}
else
return 1 + rank_22(b0, c0, a1*b2-a2*b1, a1*c2-a2*c1);
return 1 + rank_22<RT>(b0, c0, a1*b2-a2*b1, a1*c2-a2*c1);
}
else
{
return 1 + rank_22(a0*b1-a1*b0, a0*c1-a1*c0, a0*b2-a2*b0, a0*c2-a2*c0);
return 1 + rank_22<RT>(a0*b1-a1*b0, a0*c1-a1*c0, a0*b2-a2*b0, a0*c2-a2*c0);
}
}
@ -120,14 +120,14 @@ int rank_23(const RT& a0, const RT& b0, const RT& c0,
{
if (a1==0)
{
return rank_22(b0, c0, b1, c1);
return rank_22<RT>(b0, c0, b1, c1);
}
else
return 1 + rank_12(b0,c0);
return 1 + rank_12<RT>(b0,c0);
}
else
{
return 1 + rank_12(a0*b1-a1*b0,a0*c1-a1*c0);
return 1 + rank_12<RT>(a0*b1-a1*b0,a0*c1-a1*c0);
}
}
@ -143,19 +143,19 @@ int rank_34(const RT& a0, const RT& b0, const RT& c0, const RT& d0,
{
if (a2==0)
{
return rank_33(b0, c0, d0, b1, c1, d1, b2, c2, d2);
return rank_33<RT>(b0, c0, d0, b1, c1, d1, b2, c2, d2);
}
else
{
return 1 + rank_23(b0, c0, d0, b1, c1, d1);
return 1 + rank_23<RT>(b0, c0, d0, b1, c1, d1);
}
}
else
return 1 + rank_23(b0, c0, d0,a1*b2-a2*b1, a1*c2-a2*c1, a1*d2 - a2*d1);
return 1 + rank_23<RT>(b0, c0, d0,a1*b2-a2*b1, a1*c2-a2*c1, a1*d2 - a2*d1);
}
else
{
return 1 + rank_23(a0*b1-a1*b0, a0*c1-a1*c0, a0*d1-a1*d0, a0*b2-a2*b0, a0*c2-a2*c0, a0*d2-a2*d0);
return 1 + rank_23<RT>(a0*b1-a1*b0, a0*c1-a1*c0, a0*d1-a1*d0, a0*b2-a2*b0, a0*c2-a2*c0, a0*d2-a2*d0);
}
}