Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Aff_transformationS2.h
Go to the documentation of this file.
1 // ======================================================================
2 //
3 // Copyright (c) 1999 The CGAL Consortium
4 
5 // This software and related documentation is part of the Computational
6 // Geometry Algorithms Library (CGAL).
7 // This software and documentation is provided "as-is" and without warranty
8 // of any kind. In no event shall the CGAL Consortium be liable for any
9 // damage of any kind.
10 //
11 // Every use of CGAL requires a license.
12 //
13 // Academic research and teaching license
14 // - For academic research and teaching purposes, permission to use and copy
15 // the software and its documentation is hereby granted free of charge,
16 // provided that it is not a component of a commercial product, and this
17 // notice appears in all copies of the software and related documentation.
18 //
19 // Commercial licenses
20 // - A commercial license is available through Algorithmic Solutions, who also
21 // markets LEDA (http://www.algorithmic-solutions.de).
22 // - Commercial users may apply for an evaluation license by writing to
23 // Algorithmic Solutions (contact@algorithmic-solutions.com).
24 //
25 // The CGAL Consortium consists of Utrecht University (The Netherlands),
26 // ETH Zurich (Switzerland), Free University of Berlin (Germany),
27 // INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
28 // (Germany), Max-Planck-Institute Saarbrucken (Germany), RISC Linz (Austria),
29 // and Tel-Aviv University (Israel).
30 //
31 // ----------------------------------------------------------------------
32 // release : CGAL-2.2
33 // release_date : 2000, September 30
34 //
35 // source : webS2/S2.lw
36 // file : include/CGAL/SimpleCartesian/Aff_transformationS2.h
37 // package : S2 (1.7)
38 // revision : 1.6
39 // revision_date : 27 Jun 2000
40 // author(s) : Stefan Schirra
41 // based on code by
42 // Andreas Fabri and
43 // Herve Brönnimann
44 //
45 // coordinator : MPI, Saarbrücken
46 // email : contact@cgal.org
47 // www : http://www.cgal.org
48 //
49 // ======================================================================
50 
51 
52 #ifndef CGAL_AFF_TRANSFORMATIONS2_H
53 #define CGAL_AFF_TRANSFORMATIONS2_H
54 
55 #include <CGAL/config.h>
56 #include <cmath>
57 #include <CGAL/rational_rotation.h>
58 #include <CGAL/Handle.h>
60 #include <CGAL/determinant.h>
61 
62 #if defined(CGAL_CFG_INCOMPLETE_TYPE_BUG_1) && \
63  !defined(CGAL_NO_LINE_TRANSFORM_IN_AT)
64 #define CGAL_NO_LINE_TRANSFORM_IN_AT
65 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_1
66 
67 
69 
70 template < class FT >
72 
73 template < class FT >
75 
76 template < class FT >
78 
79 template < class FT >
81 
82 
83 template < class FT >
85 {
86 public:
88 
89  virtual PointS2<FT>
90  transform(const PointS2<FT>& p) const = 0;
91 
92  virtual VectorS2<FT>
93  transform(const VectorS2<FT>& v) const = 0;
94 
95  virtual DirectionS2<FT>
96  transform(const DirectionS2<FT>& d) const=0;
97 
98 #ifdef CGAL_CFG_INCOMPLETE_TYPE_BUG_3
100  general_form() const = 0;
101 #else
102  virtual Aff_transformationS2<FT>
104 
105  virtual Aff_transformationS2<FT>
106  compose( const Translation_repS2<FT>& t) const = 0;
107 
108  virtual Aff_transformationS2<FT>
109  compose( const Rotation_repS2<FT>& t) const = 0;
110 
111  virtual Aff_transformationS2<FT>
112  compose( const Scaling_repS2<FT>& t) const = 0;
113 
114  virtual Aff_transformationS2<FT>
115  compose( const Aff_transformation_repS2<FT>& t) const = 0;
116 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_3
117  virtual Aff_transformationS2<FT>
118  inverse() const = 0;
119 
120  virtual bool
121  is_even() const = 0;
122 
123  virtual FT
124  cartesian(int i, int j) const = 0;
125 
126 };
127 
128 
129 template < class FT >
131 {
132  friend class Translation_repS2<FT>;
133  friend class Rotation_repS2<FT>;
134  friend class Scaling_repS2<FT>;
135  friend class Aff_transformationS2<FT>;
136 
137  public:
138 
140  {}
141 
142  Aff_transformation_repS2( const FT& m11, const FT& m12,
143  const FT& m21, const FT& m22)
144  : t11(m11), t12(m12), t13(0),
145  t21(m21), t22(m22), t23(0)
146  {}
147 
148  Aff_transformation_repS2( const FT& m11, const FT& m12, const FT& m13,
149  const FT& m21, const FT& m22, const FT& m23)
150  : t11(m11), t12(m12), t13(m13),
151  t21(m21), t22(m22), t23(m23)
152  {}
153 
155  {}
156 
158  {
159  return PointS2<FT>(t11 * p.x() + t12 * p.y() + t13,
160  t21 * p.x() + t22 * p.y() + t23);
161  }
162 
163 
164  // note that a vector is not translated
166  {
167  return VectorS2<FT>(t11 * v.x() + t12 * v.y(),
168  t21 * v.x() + t22 * v.y());
169  }
170 
171 
172  // note that a direction is not translated
174  {
175  VectorS2<FT> v = dir.vector();
176  return DirectionS2<FT>(t11 * v.x() + t12 * v.y(),
177  t21 * v.x() + t22 * v.y());
178  }
179 
181  {
182  FT det = FT(1) / (t11 * t22 - t12 * t21);
183 
185  det * t22, det * (-t12), det * (t12*t23-t13*t22),
186  det * (-t21), det * t11 , det * (t13*t21-t11*t23));
187  }
188 
189 #ifdef CGAL_CFG_INCOMPLETE_TYPE_BUG_3
190 
191  Aff_transformationS2<FT> general_form() const
192  {
194  t21, t22, t23);
195  }
196 
197 #else
200  {
201  return t.compose(*this);
202  }
203 
205  {
207  t12,
208  t13 + t._translationvector.x(),
209  t21,
210  t22,
211  t23 + t._translationvector.y());
212  }
213 
215  {
217  t._cosinus*t12 - t._sinus*t22,
218  t._cosinus*t13 - t._sinus*t23,
219  t._sinus*t11 + t._cosinus*t21,
220  t._sinus*t12 + t._cosinus*t22,
221  t._sinus*t13 + t._cosinus*t23);
222  }
223 
225  {
227  t._scalefactor * t12,
228  t._scalefactor * t13,
229  t._scalefactor * t21,
230  t._scalefactor * t22,
231  t._scalefactor * t23);
232  }
233 
235  const Aff_transformation_repS2<FT>& t) const
236  {
237  return Aff_transformationS2<FT>(t.t11*t11 + t.t12*t21,
238  t.t11*t12 + t.t12*t22,
239  t.t11*t13 + t.t12*t23 + t.t13,
240  t.t21*t11 + t.t22*t21,
241  t.t21*t12 + t.t22*t22,
242  t.t21*t13 + t.t22*t23 + t.t23 );
243  }
244 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_3
245 
246  virtual bool is_even() const
247  {
249  }
250 
251  virtual FT cartesian(int i, int j) const
252  {
253  switch (i)
254  {
255  case 0: switch (j)
256  {
257  case 0: return t11;
258  case 1: return t12;
259  case 2: return t13;
260  }
261  case 1: switch (j)
262  {
263  case 0: return t21;
264  case 1: return t22;
265  case 2: return t23;
266  }
267  case 2: switch (j)
268  {
269  case 0: return FT(0);
270  case 1: return FT(0);
271  case 2: return FT(1);
272  }
273  }
274  return FT(0);
275  }
276 
277  virtual std::ostream& print(std::ostream &os) const
278  {
279  os << "Aff_transformationS2(" << t11 << " " << t12 << " " << t13 << std::endl;
280  os << " " << t21 << " " << t22 << " " << t23 << ")";
281  return os;
282  }
283 
284 private:
285  FT t11, t12, t13;
286  FT t21, t22, t23;
287 };
288 
289 template < class FT >
291 {
292  friend class Aff_transformation_repS2<FT>;
293  friend class Rotation_repS2<FT>;
294  friend class Scaling_repS2<FT>;
295  public:
297  {}
298 
300  {}
301 
303  {}
304 
305  PointS2<FT>
306  transform(const PointS2<FT>& p) const
307  { return p + _translationvector; }
308 
309  VectorS2<FT>
310  transform(const VectorS2<FT>& v) const
311  { return v; }
312 
315  { return d; }
316 
317 #ifdef CGAL_CFG_INCOMPLETE_TYPE_BUG_3
318 
319  Aff_transformationS2<FT> general_form() const
320  {
321  return Aff_transformationS2<FT>(FT(1), FT(0), _translationvector.x(),
322  FT(0), FT(1), _translationvector.y());
323  }
324 
325 #else
328  {
329  return t.compose(*this);
330  }
331 
333  const Translation_repS2<FT>& t) const
334  {
338  }
339 
341  const Rotation_repS2<FT>& t) const
342  {
344  -t._sinus,
347 
348  t._sinus,
349  t._cosinus,
350  t._sinus*_translationvector.x() +
352  }
353 
355  const Scaling_repS2<FT>& t) const
356  {
358  FT(0),
360 
361  FT(0),
362  t._scalefactor,
364  }
365 
367  const Aff_transformation_repS2<FT>& t) const
368  {
369  return Aff_transformationS2<FT>(t.t11,
370  t.t12,
371  t.t11 * _translationvector.x()
372  + t.t12 * _translationvector.y()
373  + t.t13,
374 
375  t.t21,
376  t.t22,
377  t.t21 * _translationvector.x()
378  + t.t22*_translationvector.y()
379  + t.t23);
380  }
381 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_3
382 
384  {
387  }
388 
389  virtual bool is_even() const
390  {
391  return true;
392  }
393 
394  virtual FT cartesian(int i, int j) const
395  {
396  if (j==i) return FT(1);
397  if (j==2) return _translationvector[i];
398  return FT(0);
399  }
400 
401  virtual std::ostream& print(std::ostream &os) const
402  {
403  os << "Aff_transformationS2(VectorS2(" << _translationvector.x() << ", "
404  << _translationvector.y() << "))";
405  return os;
406  }
407 
408 private:
410 };
411 
412 template < class FT >
414 {
415  friend class Aff_transformation_repS2<FT>;
416  friend class Translation_repS2<FT>;
417  friend class Scaling_repS2<FT>;
418  public:
420  {}
421 
422  Rotation_repS2(const FT& sinus, const FT &cosinus)
423  : _sinus(sinus), _cosinus(cosinus)
424  {}
425 
427  const FT& eps_num,
428  const FT& eps_den = FT(1))
429  {
430  FT sin_num;
431  FT cos_num;
432  FT denom;
433 
435  d.vector().y(),
436  sin_num,
437  cos_num,
438  denom,
439  eps_num,
440  eps_den);
441  _sinus = sin_num/denom;
442  _cosinus = cos_num/denom;
443  }
444 
446  {}
447 
449  {
450  return PointS2<FT>(_cosinus * p.x() - _sinus * p.y(),
451  _sinus * p.x() + _cosinus * p.y());
452  }
453 
455  {
456  return VectorS2<FT>(_cosinus * v.x() - _sinus * v.y(),
457  _sinus * v.x() + _cosinus * v.y());
458  }
459 
461  {
462  VectorS2<FT> v = d.vector();
463  return DirectionS2<FT>(_cosinus * v.x() - _sinus * v.y(),
464  _sinus * v.x() + _cosinus * v.y());
465  }
466 
468  {
470  - _sinus, _cosinus, FT(1));
471  }
472 #ifdef CGAL_CFG_INCOMPLETE_TYPE_BUG_3
473 
474  Aff_transformationS2<FT> general_form() const
475  {
476  return Aff_transformationS2<FT>(_cosinus, - _sinus, FT(0),
477  _sinus, _cosinus, FT(0));
478  }
479 
480 #else
481 
484  {
485  return t.compose(*this);
486  }
487 
489  const Translation_repS2<FT>& t) const
490  {
492  -_sinus,
493  t._translationvector.x(),
494 
495  _sinus,
496  _cosinus,
497  t._translationvector.y());
498  }
499 
500 
502  const Rotation_repS2<FT>& t) const
503  {
507  }
508 
510  const Scaling_repS2<FT>& t) const
511  {
513  t._scalefactor*-_sinus,
514 
517  }
518 
520  const Aff_transformation_repS2<FT>& t) const
521  {
523  -_sinus*t.t11 + _cosinus*t.t12,
524  t.t13,
525 
526  _cosinus*t.t21 + _sinus*t.t22,
527  -_sinus*t.t21 + _cosinus*t.t22,
528  t.t23);
529  }
530 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_3
531 
532  virtual bool is_even() const
533  {
534  return true;
535  }
536 
537  virtual FT cartesian(int i, int j) const
538  {
539  switch (i)
540  {
541  case 0: switch (j)
542  {
543  case 0: return _cosinus;
544  case 1: return -_sinus;
545  case 2: return FT(0);
546  }
547  case 1: switch (j)
548  {
549  case 0: return _sinus;
550  case 1: return _cosinus;
551  case 2: return FT(0);
552  }
553  case 2: switch (j)
554  {
555  case 0: return FT(0);
556  case 1: return FT(0);
557  case 2: return FT(1);
558  }
559  }
560  return FT(0);
561  }
562 
563  virtual std::ostream& print(std::ostream &os) const
564  {
565  os << "Aff_transformationS2(" << _sinus << ", " << _cosinus << ")";
566  return os;
567  }
568 
569 private:
570  FT _sinus;
572 };
573 
574 template < class FT >
576 {
577  friend class Aff_transformation_repS2<FT>;
578  friend class Rotation_repS2<FT>;
579  friend class Translation_repS2<FT>;
580 
581  public:
583  {}
584 
585  Scaling_repS2(const FT& scalefactor) :
586  _scalefactor(scalefactor)
587  {}
588 
590  {}
591 
593  {
594  return PointS2<FT>(_scalefactor * p.x(), _scalefactor * p.y());
595  }
596 
598  {
599  return VectorS2<FT>(_scalefactor * p.x(), _scalefactor * p.y());
600  }
601 
603  {
604  return d;
605  }
606 
607 #ifdef CGAL_CFG_INCOMPLETE_TYPE_BUG_3
608 
609  Aff_transformationS2<FT> general_form() const
610  {
611  return Aff_transformationS2<FT>(_scalefactor, FT(0), FT(0),
612  FT(0), _scalefactor, FT(0));
613  }
614 
615 #else
618  {
619  return t.compose(*this);
620  }
621 
623  {
624  FT ft0(0);
625 
627  ft0,
628  t._translationvector.x(),
629 
630  ft0,
631  _scalefactor,
632  t._translationvector.y());
633  }
634 
636  {
638  _scalefactor * -t._sinus,
639 
640  _scalefactor * t._sinus,
641  _scalefactor * t._cosinus);
642  }
643 
645  {
647  }
648 
650  const Aff_transformation_repS2<FT>& t) const
651  {
653  _scalefactor * t.t12,
654  t.t13,
655 
656  _scalefactor * t.t21,
657  _scalefactor * t.t22,
658  t.t23);
659  }
660 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_3
661 
663  {
665  }
666 
667  virtual bool is_even() const
668  {
669  return true;
670  }
671 
672  virtual FT cartesian(int i, int j) const
673  {
674  if (i!=j) return FT(0);
675  return (i==2) ? FT(1) : _scalefactor;
676  }
677 
678  virtual std::ostream& print(std::ostream &os) const
679  {
680  os << "Aff_transformationS2(" << _scalefactor << ")";
681  return os;
682  }
683 
684 private:
686 };
687 
688 
689 template < class FT >
691 {
692 
693 
694 public:
696 
698 
700 
701  // Translation:
703  const VectorS2<FT>& v);
704 
705  // Rational Rotation:
707  const DirectionS2<FT>& d,
708  const FT& num,
709  const FT& den = FT(1));
710 
712  const FT& sine_rho,
713  const FT& cosine_rho,
714  const FT& hw = FT(1));
715 
716  // Scaling:
718  const FT& s,
719  const FT& w = FT(1));
720 
721  // The general case:
722  Aff_transformationS2(const FT& m11,
723  const FT& m12,
724  const FT& m13,
725  const FT& m21,
726  const FT& m22,
727  const FT& m23,
728  const FT& w = FT(1));
729 
730  Aff_transformationS2(const FT& m11, const FT & m12,
731  const FT& m21, const FT & m22,
732  const FT& w = FT(1));
733 
735 
736  PointS2<FT> transform(const PointS2<FT>& p) const;
737  PointS2<FT> operator()(const PointS2<FT>& p) const;
738 
739  VectorS2<FT> transform(const VectorS2<FT>& p) const;
740  VectorS2<FT> operator()(const VectorS2<FT>& p) const;
741 
742  DirectionS2<FT> transform(const DirectionS2<FT>& d) const;
744 
745 #ifndef CGAL_NO_LINE_TRANSFORM_IN_AT
746  LineS2<FT> transform(const LineS2<FT>& l) const;
747  LineS2<FT> operator()(const LineS2<FT>& l) const;
748 #endif // CGAL_NO_LINE_TRANSFORM_IN_AT
749 
751 
752  bool is_even() const { return ptr()->is_even(); }
753  bool is_odd() const;
754 
755  FT cartesian(int i, int j) const { return ptr()->cartesian(i,j); }
756  FT homogeneous(int i, int j) const { return cartesian(i,j); }
757  FT m(int i, int j) const { return cartesian(i,j); }
758  FT hm(int i, int j) const { return cartesian(i,j); }
759 
760 #ifdef CGAL_CFG_INCOMPLETE_TYPE_BUG_3
761 
762 Aff_transformationS2<FT> general_form() const
763 {
764  return ptr()->general_form();
765 }
766 
767 
769 {
770  Aff_transformationS2<FT> tt1 = general_form(), tt2 = t.general_form();
772 
774 
776  t1->t11*t2->t11 + t1->t12*t2->t21,
777  t1->t11*t2->t12 + t1->t12*t2->t22,
778  t1->t11*t2->t13 + t1->t12*t2->t23 + t1->t13,
779 
780  t1->t21*t2->t11 + t1->t22*t2->t21,
781  t1->t21*t2->t12 + t1->t22*t2->t22,
782  t1->t21*t2->t13 + t1->t22*t2->t23 + t1->t23 );
783 }
784 
785 #else
786 
788 {
789  return (*ptr()) * (*t.ptr());
790 }
791 
792 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_3
793 
794  std::ostream & print(std::ostream &os) const;
795 
796 private:
798  {
800  }
801 
802 };
803 
804 
805 
806 template < class FT >
808 { PTR = new Aff_transformation_repS2<FT>(FT(1), FT(0), FT(0), FT(1)); }
809 
810 template < class FT >
812 { PTR = new Aff_transformation_repS2<FT>(FT(1), FT(0), FT(0), FT(1)); }
813 
814 template < class FT >
816  : Handle(t)
817 {}
818 
819 
820 template < class FT >
822  const FT& m12,
823  const FT& m21,
824  const FT& m22,
825  const FT& w)
826 {
827  if (w != FT(1))
828  PTR = new Aff_transformation_repS2<FT>(m11/w, m12/w, m21/w, m22/w);
829  else
830  PTR = new Aff_transformation_repS2<FT>(m11, m12, m21, m22);
831 }
832 
833 template < class FT >
835  const VectorS2<FT>& v)
836 { PTR = new Translation_repS2<FT>(v); }
837 
838 template < class FT >
840  const DirectionS2<FT>& d,
841  const FT& num,
842  const FT& den)
843 { PTR = new Rotation_repS2<FT>(d, num, den); }
844 
845 
846 template < class FT >
848  const FT& sine,
849  const FT &cosine,
850  const FT &w)
851 {
852  if (w != FT(1))
853  PTR = new Rotation_repS2<FT>(sine/w, cosine/w);
854  else
855  PTR = new Rotation_repS2<FT>(sine, cosine);
856 }
857 
858 template < class FT >
860  const FT& s,
861  const FT& w)
862 {
863  if (w != FT(1))
864  PTR = new Scaling_repS2<FT>(s/w);
865  else
866  PTR = new Scaling_repS2<FT>(s);
867 }
868 
869 
870 
871 template < class FT >
873  const FT& m11, const FT & m12, const FT & m13,
874  const FT& m21, const FT & m22, const FT & m23,
875  const FT& w)
876 {
877  if (w != FT(1))
878  PTR = new Aff_transformation_repS2<FT>(m11/w, m12/w, m13/w,
879  m21/w, m22/w, m23/w);
880  else
881  PTR = new Aff_transformation_repS2<FT>(m11, m12, m13,
882  m21, m22, m23);
883 }
884 
885 template < class FT >
887 {}
888 
889 
890 template < class FT >
893 { return ptr()->transform(p); }
894 
895 template < class FT >
896 inline
899 { return transform(p); }
900 
901 template < class FT >
904 { return ptr()->transform(p); }
905 
906 template < class FT >
907 inline
910 { return transform(p); }
911 
912 template < class FT >
915 { return ptr()->transform(d); }
916 
917 template < class FT >
918 inline
921 { return transform(d); }
922 
923 #ifndef CGAL_NO_LINE_TRANSFORM_IN_AT
924 template < class FT >
925 inline
928 {
929  return LineS2<FT>(ptr()->transform(l.point(0)),
930  ptr()->transform(l.direction()));
931 }
932 
933 template < class FT >
934 inline
937 { return transform(l); }
938 #endif // CGAL_NO_LINE_TRANSFORM_IN_AT
939 
940 template < class FT >
943 {
944  return ptr()->inverse();
945 }
946 
947 
948 template < class FT >
949 bool
951 {
952  return ! (ptr()->is_even());
953 }
954 
955 
956 template < class FT >
957 std::ostream&
958 Aff_transformationS2<FT>::print(std::ostream& os) const
959 {
960  ptr()->print(os);
961  return os;
962 }
963 
964 
965 #ifndef CGAL_NO_OSTREAM_INSERT_AFF_TRANSFORMATIONS2
966 template < class FT >
967 std::ostream&
968 operator<<(std::ostream& os, const Aff_transformationS2<FT>& t)
969 {
970  t.print(os);
971  return os;
972 }
973 #endif // CGAL_NO_OSTREAM_INSERT_AFF_TRANSFORMATIONS2
974 
975 #ifndef CGAL_NO_ISTREAM_EXTRACT_AFF_TRANSFORMATIONS2
976 #endif // CGAL_NO_ISTREAM_EXTRACT_AFF_TRANSFORMATIONS2
977 
978 
979 
981 
982 #endif // CGAL_AFF_TRANSFORMATIONS2_H
Aff_transformationS2< FT > inverse() const
virtual FT cartesian(int i, int j) const
Scaling SCALING
Aff_transformation_repS2(const FT &m11, const FT &m12, const FT &m13, const FT &m21, const FT &m22, const FT &m23)
Rotation_repS2(const FT &sinus, const FT &cosinus)
Aff_transformationS2< FT > compose(const Translation_repS2< FT > &t) const
DirectionS2< FT > direction() const
Definition: LineS2.h:270
Translation_repS2(const VectorS2< FT > &tv)
virtual std::ostream & print(std::ostream &os) const
virtual Aff_transformationS2< FT > compose(const Scaling_repS2< FT > &t) const
DirectionS2< FT > transform(const DirectionS2< FT > &d) const
PointS2< FT > transform(const PointS2< FT > &p) const
Aff_transformationS2< FT > operator*(const Aff_transformation_rep_baseS2< FT > &t)
const NT & d
virtual Aff_transformationS2< FT > compose(const Rotation_repS2< FT > &t) const
Aff_transformationS2< FT > compose(const Translation_repS2< FT > &t) const
Aff_transformationS2< FT > inverse() const
CGAL_BEGIN_NAMESPACE Sign sign_of_determinant2x2(const FT &a00, const FT &a01, const FT &a10, const FT &a11)
double s
Definition: blastest.C:80
virtual Aff_transformationS2< FT > compose(const Aff_transformation_repS2< FT > &t) const
Aff_transformationS2< FT > inverse() const
virtual Aff_transformationS2< FT > compose(const Aff_transformation_repS2< FT > &t) const
VectorS2< FT > transform(const VectorS2< FT > &v) const
virtual FT cartesian(int i, int j) const
virtual PointS2< FT > transform(const PointS2< FT > &p) const =0
virtual Aff_transformationS2< FT > compose(const Scaling_repS2< FT > &t) const
virtual Aff_transformationS2< FT > compose(const Aff_transformation_repS2< FT > &t) const
Aff_transformationS2< FT > compose(const Translation_repS2< FT > &t) const
virtual FT cartesian(int i, int j) const
NT & den
CGAL_BEGIN_NAMESPACE void const NT NT NT & cos_num
virtual bool is_even() const
VectorS2< FT > transform(const VectorS2< FT > &v) const
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
Aff_transformationS2< FT > operator*(const Aff_transformation_rep_baseS2< FT > &t)
CGAL_END_NAMESPACE CGAL_BEGIN_NAMESPACE typedef Leda_like_handle Handle
Definition: Handle.h:137
virtual Aff_transformationS2< FT > compose(const Scaling_repS2< FT > &t) const
DirectionS2< FT > transform(const DirectionS2< FT > &d) const
virtual Aff_transformationS2< FT > inverse() const =0
PointS2< FT > point(int i) const
Definition: LineS2.h:231
Translation TRANSLATION
Aff_transformation_repS2(const FT &m11, const FT &m12, const FT &m21, const FT &m22)
VectorS2< FT > _translationvector
virtual Aff_transformationS2< FT > compose(const Scaling_repS2< FT > &t) const
Aff_transformationS2< FT > operator*(const Aff_transformationS2< FT > &t) const
FT hm(int i, int j) const
std::ostream & print(std::ostream &os) const
VectorS2< FT > vector() const
Definition: DirectionS2.h:177
Definition: enum.h:61
blockLoc i
Definition: read.cpp:79
virtual bool is_even() const
Rotation ROTATION
Aff_transformationS2< FT > inverse() const
DirectionS2< FT > transform(const DirectionS2< FT > &dir) const
Aff_transformationS2< FT > compose(const Translation_repS2< FT > &t) const
Aff_transformation_rep_baseS2< FT > * ptr() const
void rational_rotation_approximation(const double &angle, NT &sin_num, NT &cos_num, NT &denom, const NT &eps_num, const NT &eps_den)
FT cartesian(int i, int j) const
PointS2< FT > transform(const PointS2< FT > &p) const
Aff_transformationS2< FT > operator*(const Aff_transformation_rep_baseS2< FT > &t)
PointS2< FT > transform(const PointS2< FT > &p) const
virtual FT cartesian(int i, int j) const =0
CGAL_BEGIN_NAMESPACE void const NT NT NT NT const NT const NT & eps_den
Definition: LineS2.h:62
double det(const Matrix3D &A)
virtual std::ostream & print(std::ostream &os) const
virtual Aff_transformationS2< FT > operator*(const Aff_transformation_rep_baseS2< FT > &t)=0
DirectionS2< FT > transform(const DirectionS2< FT > &d) const
PointS2< FT > transform(const PointS2< FT > &p) const
Rotation_repS2(const DirectionS2< FT > &d, const FT &eps_num, const FT &eps_den=FT(1))
Aff_transformationS2< FT > inverse() const
j indices j
Definition: Indexing.h:6
Scaling_repS2(const FT &scalefactor)
virtual std::ostream & print(std::ostream &os) const
VectorS2< FT > transform(const VectorS2< FT > &v) const
virtual Aff_transformationS2< FT > compose(const Rotation_repS2< FT > &t) const
CGAL_BEGIN_NAMESPACE void const NT NT & sin_num
FT m(int i, int j) const
virtual std::ostream & print(std::ostream &os) const
PointS2< FT > operator()(const PointS2< FT > &p) const
#define CGAL_BEGIN_NAMESPACE
Definition: kdtree_d.h:86
virtual Aff_transformationS2< FT > compose(const Translation_repS2< FT > &t) const =0
virtual FT cartesian(int i, int j) const
virtual bool is_even() const
virtual Aff_transformationS2< FT > compose(const Rotation_repS2< FT > &t) const
virtual Aff_transformationS2< FT > compose(const Aff_transformation_repS2< FT > &t) const
virtual bool is_even() const =0
CGAL_BEGIN_NAMESPACE void const NT NT NT NT & denom
PointS2< FT > transform(const PointS2< FT > &p) const
#define CGAL_END_NAMESPACE
Definition: kdtree_d.h:87
FT homogeneous(int i, int j) const
virtual Aff_transformationS2< FT > compose(const Rotation_repS2< FT > &t) const
Aff_transformationS2< FT > operator*(const Aff_transformation_rep_baseS2< FT > &t)
virtual bool is_even() const
CGAL_BEGIN_NAMESPACE void const NT NT NT NT const NT & eps_num
VectorS2< FT > transform(const VectorS2< FT > &p) const