CQuaternion.java 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright (c) 2014 Jamison Hope
  2. // This is free software; for terms and warranty disclaimer see ./COPYING.
  3. package gnu.math;
  4. import java.io.*;
  5. /**
  6. * General Cartesian Quaternion number (a four-dimensional extension
  7. * of complex numbers).
  8. * Use this instead of DQuaternion if you want exact quaternion
  9. * numbers.
  10. * @author Jamison Hope
  11. */
  12. public class CQuaternion extends Quaternion implements Externalizable {
  13. RealNum real;
  14. RealNum imag;
  15. RealNum jmag;
  16. RealNum kmag;
  17. public CQuaternion() {
  18. }
  19. public CQuaternion(RealNum real, RealNum imag, RealNum jmag,
  20. RealNum kmag) {
  21. this.real = real;
  22. this.imag = imag;
  23. this.jmag = jmag;
  24. this.kmag = kmag;
  25. }
  26. public RealNum re() { return real; }
  27. public RealNum im() { return imag; }
  28. public RealNum jm() { return jmag; }
  29. public RealNum km() { return kmag; }
  30. /**
  31. * @serialData Write the real and imaginary parts, as Objects.
  32. */
  33. public void writeExternal(ObjectOutput out) throws IOException {
  34. out.writeObject(real);
  35. out.writeObject(imag);
  36. out.writeObject(jmag);
  37. out.writeObject(kmag);
  38. }
  39. public void readExternal(ObjectInput in)
  40. throws IOException, ClassNotFoundException {
  41. real = (RealNum) in.readObject();
  42. imag = (RealNum) in.readObject();
  43. jmag = (RealNum) in.readObject();
  44. kmag = (RealNum) in.readObject();
  45. }
  46. }