mirror of https://github.com/CGAL/cgal
Fix homogeneous code
This commit is contained in:
parent
83f35c687c
commit
33b7172715
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue