Exemplo n.º 1
0
  /**
   * Returns a tangent Quaternion for {@code center}, defined by {@code before} and {@code after}
   * quaternions.
   *
   * @param before the first Quaternion
   * @param center the second Quaternion
   * @param after the third Quaternion
   */
  public static final Quaternion squadTangent(
      Quaternion before, Quaternion center, Quaternion after) {
    Quaternion l1 = Quaternion.lnDif(center, before);
    Quaternion l2 = Quaternion.lnDif(center, after);
    Quaternion e = new Quaternion();

    e.x = -0.25f * (l1.x + l2.x);
    e.y = -0.25f * (l1.y + l2.y);
    e.z = -0.25f * (l1.z + l2.z);
    e.w = -0.25f * (l1.w + l2.w);

    return Quaternion.multiply(center, e.exp());
  }