Fix homogeneous code

This commit is contained in:
Maxime Gimeno 2018-10-16 16:57:57 +02:00
parent 83f35c687c
commit 33b7172715
4 changed files with 37 additions and 19 deletions

View File

@ -263,13 +263,9 @@ typename Aff_transformation_repC2<R>::Aff_transformation_2
Aff_transformation_repC2<R>::
compose(const Reflection_repC2<R> &r) const
{
return Aff_transformation_2(
t11*r.cosinus_+t12*r.sinus_,
t11*r.sinus_-t12*r.cosinus_,
t11*r.t13()+t12*r.t23()+t13,
t21*r.cosinus_+t22*r.sinus_,
t21*r.sinus_-t22*r.cosinus_,
t21*r.t13()+t22*r.t23()+t23);
return Aff_transformation_2(
r.cosinus_*t11+r.sinus_*t21, r.cosinus_*t12+r.sinus_*t22, r.cosinus_*(t13-r.t.x())+r.sinus_*(t23-r.t.y())+r.t.x(),
r.sinus_*(t11)-r.cosinus_*(t21), r.sinus_*(t12)-r.cosinus_*(t22), r.sinus_*(t13-r.t.x())-r.cosinus_*(t23-r.t.y())+r.t.y());
}
} //namespace CGAL

View File

@ -115,8 +115,12 @@ typedef typename CGAL::Line_2<R> Line_2;
Aff_transformation_2 compose(const Transformation &tr) const
{
return Aff_transformation_2(
cosinus_*tr.t11+sinus_*tr.t21, cosinus_*tr.t12+sinus_*tr.t22, cosinus_*(tr.t13-t.x())+sinus_*(tr.t23-t.y())+t.x(),
sinus_*(tr.t11)-cosinus_*(tr.t21), sinus_*(tr.t12)-cosinus_*(tr.t22), sinus_*(tr.t13-t.x())-cosinus_*(tr.t23-t.y())+t.y());
tr.t11*cosinus_+tr.t12*sinus_,
tr.t11*sinus_-tr.t12*cosinus_,
tr.t11*t13()+tr.t12*t23()+tr.t13,
tr.t21*cosinus_+tr.t22*sinus_,
tr.t21*sinus_-tr.t22*cosinus_,
tr.t21*t13()+tr.t22*t23()+tr.t23);
}
Aff_transformation_2 compose(const Rotation &r) const
@ -136,12 +140,12 @@ typedef typename CGAL::Line_2<R> Line_2;
{
return Aff_transformation_2(
cosinus_*r.cosinus_+sinus_*r.sinus_,
cosinus_*r.sinus_-r.cosinus_*sinus_,
sinus_*(-r.cosinus_*r.t.x()-r.sinus_*r.t.y()+r.t.x()-t.x())-cosinus_*(-r.sinus_*r.t.x()+r.cosinus_*r.t.y()+r.t.y()-t.y()) + t.x(),
sinus_*r.cosinus_-cosinus_*r.sinus_,
sinus_*r.sinus_+cosinus_*r.cosinus_,
sinus_*(-r.cosinus_*r.t.x()-r.sinus_*r.t.y()+r.t.x()-t.x())-cosinus_*(-r.sinus_*r.t.x()+r.cosinus_*r.t.y()+r.t.y()-t.y())+t.y()
);
r.cosinus_*sinus_-r.sinus_*cosinus_,
r.cosinus_*(t13()-r.t.x()) + r.sinus_*(t23()-r.t.y())+r.t.x(),
r.sinus_*cosinus_ - r.cosinus_*sinus_,
r.sinus_*sinus_+r.cosinus_*cosinus_,
r.sinus_*(t13()-r.t.x()) -r.cosinus_*(t23()-r.t.y())+r.t.y());
}
Aff_transformation_2 inverse() const

View File

@ -453,14 +453,12 @@ class Reflection_repH2 : public Aff_transformation_rep_baseH2<R>
virtual Direction_2
transform(const Direction_2 & d) const
{ return transform( Vector_2(d) ).direction(); }
{ return transform( d.vector() ).direction(); }
virtual Aff_transformationH2<R>
inverse() const
{
return Aff_transformationH2<R>(
static_cast< Aff_transformation_rep_baseH2<R>* >
( const_cast< Reflection_repH2<R>*> (this) ) );
return Aff_transformationH2<R>(REFLECTION, l);
}
virtual bool

View File

@ -618,7 +618,27 @@ _test_cls_aff_transformation_2(const R& )
p1 = p1.transform(rot);
assert(p1 == p.transform(comp2));
//with reflection
CGAL::Aff_transformation_2<R> refl2(CGAL::REFLECTION, CGAL::Line_2<R>(
CGAL::Point_2<R>(0,0),
CGAL::Point_2<R>(1,1)));
comp1 = refl*refl2;
comp2 = refl2*refl;
p1 = p.transform(refl2);
p1 = p1.transform(refl);
assert(p1 == p.transform(comp1));
p1 = p.transform(refl);
p1 = p1.transform(refl2);
assert(p1 == p.transform(comp2));
//with transformation
CGAL::Aff_transformation_2<R> afft(1,2,3,4,5,6);
comp1 = refl*afft;
comp2 = afft*refl;
p1 = p.transform(afft);
p1 = p1.transform(refl);
assert(p1 == p.transform(comp1));
p1 = p.transform(refl);
p1 = p1.transform(afft);
assert(p1 == p.transform(comp2));
std::cout << "done" << std::endl;
return true;
}