Formatting update
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / math / Transform.java
1 /*
2  * Sixth 3D engine. Author: Svjatoslav Agejenko. 
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5 package eu.svjatoslav.sixth.e3d.math;
6
7 import eu.svjatoslav.sixth.e3d.geometry.Point3D;
8
9 public class Transform implements Cloneable {
10
11     private final Point3D translation;
12     private final Orientation orientation;
13
14     public Transform() {
15         translation = new Point3D();
16         orientation = new Orientation();
17     }
18
19     public Transform(final Point3D translation) {
20         this.translation = translation;
21         orientation = new Orientation();
22     }
23
24     public Transform(final Point3D translation, final double angleXZ,
25                      final double angleYZ) {
26
27         this.translation = translation;
28         orientation = new Orientation(angleXZ, angleYZ);
29     }
30
31     public Transform(final Point3D translation, final Orientation orientation) {
32         this.translation = translation;
33         this.orientation = orientation;
34     }
35
36     @Override
37     public Transform clone() {
38         return new Transform(translation, orientation);
39     }
40
41     public Orientation getOrientation() {
42         return orientation;
43     }
44
45     public Point3D getTranslation() {
46         return translation;
47     }
48
49     public void transform(final Point3D point) {
50         orientation.rotate(point);
51         point.add(translation);
52     }
53
54 }