create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / util / Rotation2D.java
1 package net.sf.openrocket.util;
2
3 public class Rotation2D {
4         
5         public static final Rotation2D ID = new Rotation2D(0.0, 1.0);
6
7         public final double sin, cos;
8
9         
10         public Rotation2D(double angle) {
11                 this(Math.sin(angle), Math.cos(angle));
12         }
13         
14         public Rotation2D(double sin, double cos) {
15                 this.sin = sin;
16                 this.cos = cos;
17         }
18         
19         public Coordinate rotateX(Coordinate c) {
20                 return new Coordinate(c.x, cos*c.y - sin*c.z, cos*c.z + sin*c.y, c.weight);
21         }
22         
23         public Coordinate rotateY(Coordinate c) {
24                 return new Coordinate(cos*c.x + sin*c.z, c.y, cos*c.z - sin*c.x, c.weight);
25         }
26         
27         public Coordinate rotateZ(Coordinate c) {
28                 return new Coordinate(cos*c.x - sin*c.y, cos*c.y + sin*c.x, c.z, c.weight);
29         }
30         
31
32         public Coordinate invRotateX(Coordinate c) {
33                 return new Coordinate(c.x, cos*c.y + sin*c.z, cos*c.z - sin*c.y, c.weight);
34         }
35         
36         public Coordinate invRotateY(Coordinate c) {
37                 return new Coordinate(cos*c.x - sin*c.z, c.y, cos*c.z + sin*c.x, c.weight);
38         }
39         
40         public Coordinate invRotateZ(Coordinate c) {
41                 return new Coordinate(cos*c.x + sin*c.y, cos*c.y - sin*c.x, c.z, c.weight);
42         }
43         
44 }