Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Aff_transformationS3.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 : webS3/S3.lw
36 // file : include/CGAL/SimpleCartesian/Aff_transformationS3.h
37 // package : S3 (1.6)
38 // revision : 1.6
39 // revision_date : 28 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 #ifndef CGAL_AFF_TRANSFORMATIONS3_H
52 #define CGAL_AFF_TRANSFORMATIONS3_H
53 
54 #include <cmath>
55 #include <CGAL/Handle.h>
57 #include <CGAL/determinant.h>
58 
59 #ifdef CGAL_CFG_INCOMPLETE_TYPE_BUG_1
60 #define CGAL_NO_PLANE_TRANSFORM_IN_AT
61 #endif // CGAL_CFG_INCOMPLETE_TYPE_BUG_1
62 
64 
65 template <class FT> class Aff_transformationS3;
66 template <class FT> class Aff_transformation_repS3;
67 template <class FT> class Translation_repS3;
68 template <class FT> class Scaling_repS3;
69 
70 template <class FT>
74 
75 template <class FT>
78 
79 template <class FT>
80 std::ostream&
81 operator<< (std::ostream& os, Translation_repS3<FT>& t);
82 
83 template <class FT>
84 std::ostream&
85 operator<< (std::ostream& os, Scaling_repS3<FT>& t);
86 
87 template <class FT>
88 std::ostream&
89 operator<< (std::ostream& os, const Aff_transformationS3<FT>& t);
90 
91 template < class FT >
93 {
94 public:
96 
97  virtual PointS3<FT> transform(const PointS3<FT>& p) const = 0;
98  virtual VectorS3<FT> transform(const VectorS3<FT>& v) const = 0;
100  const = 0;
101 
102  virtual Aff_transformationS3<FT> inverse() const = 0;
103 
104  virtual Aff_transformationS3<FT> transpose() const = 0;
105 
106  virtual bool is_even() const = 0;
107  virtual FT cartesian(int i, int j) const = 0;
108  virtual std::ostream& print(std::ostream& os) const = 0;
109  virtual Aff_transformationS3<FT> general_form() const = 0;
110 };
111 
112 
113 
114 template < class FT >
116 {
117  friend class Aff_transformationS3<FT>;
118 
124  (const Aff_transformationS3<FT>& a,
125  const Aff_transformationS3<FT>& b);
126 
127 public:
128 
130  {}
131 
132  Aff_transformation_repS3( const FT& m11, const FT& m12, const FT& m13,
133  const FT& m21, const FT& m22, const FT& m23,
134  const FT& m31, const FT& m32, const FT& m33)
135  : t11(m11), t12(m12), t13(m13), t14(0),
136  t21(m21), t22(m22), t23(m23), t24(0),
137  t31(m31), t32(m32), t33(m33), t34(0)
138  {}
139 
140  Aff_transformation_repS3( const FT& m11, const FT& m12,
141  const FT& m13,const FT& m14,
142 
143  const FT& m21, const FT& m22,
144  const FT& m23, const FT& m24,
145 
146  const FT& m31, const FT& m32,
147  const FT& m33, const FT& m34)
148  : t11(m11), t12(m12), t13(m13), t14(m14),
149  t21(m21), t22(m22), t23(m23), t24(m24),
150  t31(m31), t32(m32), t33(m33), t34(m34)
151  {}
152 
154  {}
155 
157  {
158  return PointS3<FT>(t11 * p.x() + t12 * p.y() + t13 * p.z() + t14,
159  t21 * p.x() + t22 * p.y() + t23 * p.z() + t24,
160  t31 * p.x() + t32 * p.y() + t33 * p.z() + t34);
161  }
162 
163 
164  // note that a vector is not translated
166  {
167  return VectorS3<FT>(t11 * v.x() + t12 * v.y() + t13 * v.z(),
168  t21 * v.x() + t22 * v.y() + t23 * v.z(),
169  t31 * v.x() + t32 * v.y() + t33 * v.z());
170  }
171 
172 
173  // note that a direction is not translated
175  {
176  VectorS3<FT> v = dir.vector();
177  return DirectionS3<FT>(t11 * v.x() + t12 * v.y() + t13 * v.z(),
178  t21 * v.x() + t22 * v.y() + t23 * v.z(),
179  t31 * v.x() + t32 * v.y() + t33 * v.z());
180  }
181 
183  {
186  t32, t33), // i 11
187 
189  t32, t33), // i 12
190 
192  t22, t23), // i 13
193 
195  t22, t23, t24, // i 14
196  t32, t33, t34 ),
197 
199  t31, t33), // i 21
200 
202  t31, t33), // i 22
203 
205  t21, t23), // i 23
206 
208  t21, t23, t24, // i 24
209  t31, t33, t34 ),
210 
212  t31, t32), // i 31
213 
215  t31, t32), // i 32
216 
218  t21, t22), // i 33
219 
221  t21, t22, t24, // i 34
222  t31, t32, t34 ),
223 
225  t21, t22, t23, // i 44
226  t31, t32, t33 )
227  ) ;
228  }
229 
230 
232  {
234  t21, t22, t23, t24,
235  t31, t32, t33, t34);
236  }
237 
239  {
240  FT ft0(0);
241  return Aff_transformationS3<FT>( t11, t21, t31, ft0,
242  t12, t22, t32, ft0,
243  t13, t23, t33, ft0);
244  }
245 
246  virtual bool is_even() const
247  {
249  t21, t22, t23,
250  t31, t32, t33) == POSITIVE;
251  }
252 
253  virtual FT cartesian(int i, int j) const
254  {
255  switch (i)
256  {
257  case 0: switch (j)
258  {
259  case 0: return t11;
260  case 1: return t12;
261  case 2: return t13;
262  case 3: return t14;
263  }
264  case 1: switch (j)
265  {
266  case 0: return t21;
267  case 1: return t22;
268  case 2: return t23;
269  case 3: return t24;
270  }
271  case 2: switch (j)
272  {
273  case 0: return t31;
274  case 1: return t32;
275  case 2: return t33;
276  case 3: return t34;
277  }
278  case 3: switch (j)
279  {
280  case 0: return FT(0);
281  case 1: return FT(0);
282  case 2: return FT(0);
283  case 3: return FT(1);
284  }
285  }
286  return FT(0);
287  }
288 
289 
290  std::ostream& print(std::ostream& os) const
291  {
292  os <<" "<< t11 <<' '<< t12 <<' '<< t13 <<' '<< t14 <<"\n";
293  os <<" "<< t21 <<' '<< t22 <<' '<< t23 <<' '<< t24 <<"\n";
294  os <<" "<< t31 <<' '<< t32 <<' '<< t33 <<' '<< t34 <<")\n";
295 
296  return os;
297  }
298 private:
299 
300  FT t11, t12, t13, t14;
301  FT t21, t22, t23, t24;
302  FT t31, t32, t33, t34;
303 
304 };
305 
306 template < class FT >
308 {
309  friend std::ostream& operator<< CGAL_NULL_TMPL_ARGS(
310  std::ostream& os, Translation_repS3<FT>& t);
312  (const Aff_transformationS3<FT>& a,
313  const Aff_transformationS3<FT>& b);
314 
315 public:
317  {}
318 
321  {}
322 
324  {}
325 
327  {
328  return p + translationvector;
329  }
330 
332  {
333  return v;
334  }
335 
337  {
338  return d;
339  }
340 
342  {
344  }
345 
347  {
348  FT ft0(0), ft1(1);
349 
350  return Aff_transformationS3<FT>(ft1, ft0, ft0, ft0,
351  ft0, ft1, ft0, ft0,
352  ft0, ft0, ft1, ft0);
353  }
354 
356  {
357  FT ft0(0), ft1(1);
358 
359  return Aff_transformationS3<FT>(ft1, ft0, ft0, translationvector.x(),
360  ft0, ft1, ft0, translationvector.y(),
361  ft0, ft0, ft1, translationvector.z());
362  }
363 
364 
365  virtual bool is_even() const
366  {
367  return true;
368  }
369 
370  virtual FT cartesian(int i, int j) const
371  {
372  if (j==i) return FT(1);
373  if (j==3) return translationvector[i];
374  return FT(0);
375  }
376 
377  std::ostream& print(std::ostream& os) const
378  {
379  FT ft0(0), ft1(1);
380  os << " "<< ft1 <<' '<< ft0 <<' '<< ft0 <<' '
381  << translationvector.x() << "\n";
382 
383  os << " "<< ft0 <<' '<< ft1 <<' '<< ft0 <<' '
384  << translationvector.y() << "\n";
385 
386  os << " "<< ft0 <<' '<< ft0 <<' '<< ft1 <<' '
387  << translationvector.z() << ")\n";
388 
389  return os;
390  }
391 
392 private:
394 };
395 
396 template < class FT >
398 {
399  friend std::ostream& operator<< CGAL_NULL_TMPL_ARGS(
400  std::ostream& os, Scaling_repS3<FT>& t);
402  (const Aff_transformationS3<FT>& a,
403  const Aff_transformationS3<FT>& b);
404 
405 public:
407  {}
408 
409  Scaling_repS3(const FT& s) :
410  scalefactor(s)
411  {}
412 
414  {}
415 
417  {
418  return PointS3<FT>(scalefactor * p.x(), scalefactor * p.y(),
419  scalefactor * p.z());
420  }
421 
423  {
424  return VectorS3<FT>(scalefactor * v.x(), scalefactor * v.y(),
425  scalefactor * v.z());
426  }
427 
429  {
430  return d;
431  }
432 
434  {
436  }
437 
439  {
440  FT ft0(0);
441 
442  return Aff_transformationS3<FT>(scalefactor, ft0, ft0,
443  ft0, scalefactor, ft0,
444  ft0, ft0, scalefactor);
445  }
446 
448  {
449  return general_form();
450  }
451 
452  virtual bool is_even() const
453  {
454  return true;
455  }
456 
457  virtual FT cartesian(int i, int j) const
458  {
459  if (i!=j) return FT(0);
460  if (i==3) return FT(1);
461  return scalefactor;
462  }
463 
464 
465  virtual std::ostream& print(std::ostream& os) const
466  {
467  FT ft0(0);
468  os << " "<< scalefactor <<' '<< ft0 <<' '<< ft0 << ' '
469  << ft0 << "\n";
470  os << " "<< ft0 <<' '<< scalefactor <<' '<< ft0 << ' '
471  << ft0 << "\n";
472  os << " "<< ft0 <<' '<< ft0 <<' '<< scalefactor <<' '
473  << ft0 << ")\n";
474 
475  return os;
476  }
477 
478 private:
480 };
481 
482 
483 template < class FT >
484 class Aff_transformationS3 : public Handle
485 {
486  friend std::ostream& operator<< CGAL_NULL_TMPL_ARGS(std::ostream& os,
487  const Aff_transformationS3<FT>& t);
488 
494  (const Aff_transformationS3<FT>& a,
495  const Aff_transformationS3<FT>& b);
496 
497 
498 public:
499  // default constructor:
501 
502  // Identity
504 
505 
506  // Translation:
508  const VectorS3<FT>& v);
509 
510  // Scaling:
512  const FT& s,
513  const FT& w = FT(1));
514 
515  // General form:
516  Aff_transformationS3(const FT& m11, const FT& m12,
517  const FT& m13,
518  const FT& m21,
519  const FT& m22,
520  const FT& m23,
521  const FT& m31,
522  const FT& m32,
523  const FT& m33,
524  const FT& w= FT(1));
525 
526  Aff_transformationS3(const FT& m11, const FT& m12,
527  const FT& m13, const FT& m14,
528  const FT& m21, const FT& m22,
529  const FT& m23, const FT& m24,
530  const FT& m31, const FT& m32,
531  const FT& m33, const FT& m34,
532  const FT& w = FT(1));
533 
535 
536  PointS3<FT> transform(const PointS3<FT>& p) const;
537  PointS3<FT> operator()(const PointS3<FT>& p) const;
538 
539  VectorS3<FT> transform(const VectorS3<FT>& v) const;
540  VectorS3<FT> operator()(const VectorS3<FT>& v) const;
541 
544 
545 
546 #ifndef CGAL_NO_PLANE_TRANSFORM_IN_AT
547  PlaneS3<FT> transform(const PlaneS3<FT>& p) const;
548  PlaneS3<FT> operator()(const PlaneS3<FT>& p) const;
549 #endif // CGAL_NO_PLANE_TRANSFORM_IN_AT
550 
554  bool is_even() const;
555  bool is_odd() const;
556  FT cartesian(int i, int j) const { return ptr()->cartesian(i,j); }
557  FT homogeneous(int i, int j) const { return cartesian(i,j); }
558  FT m(int i, int j) const { return cartesian(i,j); }
559  FT hm(int i, int j) const { return cartesian(i,j); }
560 
561 private:
563  {
565  }
566 };
567 
568 template < class FT >
570 {
571  FT ft1(1), ft0(0);
572  PTR = new Aff_transformation_repS3<FT>(ft1, ft0, ft0,
573  ft0, ft1, ft0,
574  ft0, ft0, ft1);
575 }
576 
577 template < class FT >
579 {
580  FT ft1(1), ft0(0);
581  PTR = new Aff_transformation_repS3<FT>(ft1, ft0, ft0,
582  ft0, ft1, ft0,
583  ft0, ft0, ft1);
584 }
585 
586 template < class FT >
588  const VectorS3<FT>& v)
589 {
590  PTR = new Translation_repS3<FT>(v);
591 }
592 
593 template < class FT >
595  const FT& s,
596  const FT& w)
597 {
598  if (w != FT(1))
599  PTR = new Scaling_repS3<FT>(s/w);
600  else
601  PTR = new Scaling_repS3<FT>(s);
602 }
603 
604 
605 template < class FT >
607  const FT& m13, const FT& m14,
608  const FT& m21, const FT& m22,
609  const FT& m23, const FT& m24,
610  const FT& m31, const FT& m32,
611  const FT& m33, const FT& m34,
612  const FT& w)
613 {
614  if (w != FT(1))
615  PTR = new Aff_transformation_repS3<FT>(m11/w, m12/w, m13/w, m14/w,
616  m21/w, m22/w, m23/w, m24/w,
617  m31/w, m32/w, m33/w, m34/w);
618  else
619  PTR = new Aff_transformation_repS3<FT>(m11, m12, m13, m14,
620  m21, m22, m23, m24,
621  m31, m32, m33, m34);
622 }
623 
624 template < class FT >
626  const FT& m11, const FT& m12, const FT& m13,
627  const FT& m21, const FT& m22, const FT& m23,
628  const FT& m31, const FT& m32, const FT& m33,
629  const FT& w)
630 {
631  if (w != FT(1))
632  PTR = new Aff_transformation_repS3<FT>(m11/w, m12/w, m13/w,
633  m21/w, m22/w, m23/w,
634  m31/w, m32/w, m33/w);
635  else
636  PTR = new Aff_transformation_repS3<FT>(m11, m12, m13,
637  m21, m22, m23,
638  m31, m32, m33);
639 }
640 
641 template < class FT >
643 {}
644 template < class FT >
646 {
647  return ptr()->transform(p);
648 }
649 
650 template < class FT >
651 inline
653 {
654  return transform(p);
655 }
656 
657 template < class FT >
658 inline
661 {
662  return ptr()->transform(v);
663 }
664 
665 template < class FT >
666 inline
669 {
670  return transform(v);
671 }
672 
673 template < class FT >
674 inline
677 {
678  return ptr()->transform(d);
679 }
680 
681 template < class FT >
682 inline
685 {
686  return transform(d);
687 }
688 
689 #ifndef CGAL_NO_PLANE_TRANSFORM_IN_AT
690 template < class FT >
691 inline
694 {
695  return p.transform(*this);
696 }
697 
698 template < class FT >
699 inline
702 {
703  return transform(p);
704 }
705 #endif // CGAL_NO_PLANE_TRANSFORM_IN_AT
706 
707 template < class FT >
709 {
710  return ptr()->inverse();
711 }
712 
713 
714 template < class FT >
716 {
717  return ptr()->general_form();
718 }
719 
720 template < class FT >
722 {
723  return ptr()->transpose();
724 }
725 
726 template < class FT >
728 {
729  return ptr()->is_even();
730 }
731 
732 template < class FT >
734 {
735  return ! (ptr()->is_even());
736 }
737 
738 
739 
740 template < class FT >
744 {
746  l.t11*r.t11 + l.t12*r.t21 + l.t13*r.t31,
747  l.t11*r.t12 + l.t12*r.t22 + l.t13*r.t32,
748  l.t11*r.t13 + l.t12*r.t23 + l.t13*r.t33,
749  l.t11*r.t14 + l.t12*r.t24 + l.t13*r.t34 + l.t14,
750 
751  l.t21*r.t11 + l.t22*r.t21 + l.t23*r.t31,
752  l.t21*r.t12 + l.t22*r.t22 + l.t23*r.t32,
753  l.t21*r.t13 + l.t22*r.t23 + l.t23*r.t33,
754  l.t21*r.t14 + l.t22*r.t24 + l.t23*r.t34 + l.t24,
755 
756  l.t31*r.t11 + l.t32*r.t21 + l.t33*r.t31,
757  l.t31*r.t12 + l.t32*r.t22 + l.t33*r.t32,
758  l.t31*r.t13 + l.t32*r.t23 + l.t33*r.t33,
759  l.t31*r.t14 + l.t32*r.t24 + l.t33*r.t34 + l.t34);
760 }
761 
762 
763 // this is really quick and dirty. As in the 2D case the composition of
764 // translations or scalings should be a translation or a scaling
765 template < class FT >
767  const Aff_transformationS3<FT>& b)
768 {
772 }
773 
774 
775 #ifndef CGAL_NO_OSTREAM_INSERT_AFF_TRANSFORMATIONS3
776 template < class FT >
777 std::ostream& operator<<(std::ostream& os, const Aff_transformationS3<FT>& t)
778 {
779  t.print(os);
780  return os;
781 }
782 #endif // CGAL_NO_OSTREAM_INSERT_AFF_TRANSFORMATIONS3
783 
784 #ifndef CGAL_NO_ISTREAM_EXTRACT_AFF_TRANSFORMATIONS3
785 #endif // CGAL_NO_ISTREAM_EXTRACT_AFF_TRANSFORMATIONS3
786 
787 
788 
790 
791 #endif // CGAL_AFF_TRANSFORMATIONS3_H
Scaling SCALING
PlaneS3 transform(const Aff_transformationS3< FT > &t) const
Definition: PlaneS3.h:361
friend Aff_transformationS3< FT > _general_transformation_composition CGAL_NULL_TMPL_ARGS(Aff_transformation_repS3< FT > &l, Aff_transformation_repS3< FT > &r)
CGAL_BEGIN_NAMESPACE FT det2x2_by_formula(const FT &a00, const FT &a01, const FT &a10, const FT &a11)
Definition: determinant.h:59
virtual FT cartesian(int i, int j) const
FT cartesian(int i, int j) const
Aff_transformationS3< FT > transpose() const
Vector_3< T > operator*(T t, const Vector_3< T > &v)
Definition: mapbasic.h:139
Sign sign_of_determinant3x3(const FT &a00, const FT &a01, const FT &a02, const FT &a10, const FT &a11, const FT &a12, const FT &a20, const FT &a21, const FT &a22)
PointS3< FT > transform(const PointS3< FT > &p) const
Aff_transformationS3< FT > inverse() const
const NT & d
double s
Definition: blastest.C:80
DirectionS3< FT > transform(const DirectionS3< FT > &d) const
Aff_transformationS3< FT > general_form() const
Scaling_repS3(const FT &s)
Aff_transformationS3< FT > inverse() const
CGAL_KERNEL_MEDIUM_INLINE FT det3x3_by_formula(const FT &a00, const FT &a01, const FT &a02, const FT &a10, const FT &a11, const FT &a12, const FT &a20, const FT &a21, const FT &a22)
Definition: determinant.h:71
FT hm(int i, int j) const
virtual PointS3< FT > transform(const PointS3< FT > &p) const =0
Aff_transformation_repS3(const FT &m11, const FT &m12, const FT &m13, const FT &m14, const FT &m21, const FT &m22, const FT &m23, const FT &m24, const FT &m31, const FT &m32, const FT &m33, const FT &m34)
virtual Aff_transformationS3< FT > transpose() const
VectorS3< FT > transform(const VectorS3< FT > &v) const
Aff_transformationS3< FT > general_form() 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
PointS3< FT > transform(const PointS3< FT > &p) const
DirectionS3< FT > transform(const DirectionS3< FT > &dir) const
Aff_transformationS3< FT > general_form() const
virtual FT cartesian(int i, int j) const
CGAL_END_NAMESPACE CGAL_BEGIN_NAMESPACE typedef Leda_like_handle Handle
Definition: Handle.h:137
Translation TRANSLATION
DirectionS3< FT > transform(const DirectionS3< FT > &d) const
Aff_transformationS3< FT > inverse() const
virtual Aff_transformationS3< FT > transpose() const =0
FT homogeneous(int i, int j) const
FT m(int i, int j) const
Definition: enum.h:61
blockLoc i
Definition: read.cpp:79
PointS3< FT > transform(const PointS3< FT > &p) const
friend Aff_transformationS3< FT > _general_transformation_composition CGAL_NULL_TMPL_ARGS(Aff_transformation_repS3< FT > &l, Aff_transformation_repS3< FT > &r)
virtual FT cartesian(int i, int j) const
PointS3< FT > transform(const PointS3< FT > &p) const
virtual bool is_even() const =0
virtual Aff_transformationS3< FT > inverse() const =0
VectorS3< FT > vector() const
Definition: DirectionS3.h:71
virtual bool is_even() const
PointS3< FT > operator()(const PointS3< FT > &p) const
Aff_transformationS3< FT > _general_transformation_composition(Aff_transformation_repS3< FT > &l, Aff_transformation_repS3< FT > &r)
virtual bool is_even() const
j indices j
Definition: Indexing.h:6
Aff_transformationS3< FT > transpose() const
Translation_repS3(const VectorS3< FT > &tv)
virtual FT cartesian(int i, int j) const =0
virtual Aff_transformationS3< FT > general_form() const
Aff_transformationS3< FT > transpose() const
Aff_transformation_rep_baseS3< FT > * ptr() const
Aff_transformationS3< FT > inverse() const
#define CGAL_BEGIN_NAMESPACE
Definition: kdtree_d.h:86
std::ostream & print(std::ostream &os) const
#define CGAL_NULL_TMPL_ARGS
Definition: config.h:120
VectorS3< FT > translationvector
Aff_transformation_repS3(const FT &m11, const FT &m12, const FT &m13, const FT &m21, const FT &m22, const FT &m23, const FT &m31, const FT &m32, const FT &m33)
virtual Aff_transformationS3< FT > general_form() const =0
VectorS3< FT > transform(const VectorS3< FT > &v) const
virtual std::ostream & print(std::ostream &os) const =0
virtual std::ostream & print(std::ostream &os) const
#define CGAL_END_NAMESPACE
Definition: kdtree_d.h:87
VectorS3< FT > transform(const VectorS3< FT > &v) const
std::ostream & print(std::ostream &os) const
virtual bool is_even() const