1 package net.sf.openrocket.util;
3 public class Rotation2D {
5 public static final Rotation2D ID = new Rotation2D(0.0, 1.0);
7 public final double sin, cos;
10 public Rotation2D(double angle) {
11 this(Math.sin(angle), Math.cos(angle));
14 public Rotation2D(double sin, double cos) {
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);
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);
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);
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);
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);
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);