Example #1
0
  /**
   * Translate
   *
   * @param t 2d translation vector
   */
  public void translate(final double... t) {
    assert t.length == 2 : "2d affine transformations can be translated by 2d vector only.";
    a.m02 += t[0];
    a.m12 += t[1];

    invert();
    updateDs();
    inverse.updateDs();
  }
Example #2
0
  @Override
  public final AffineTransform2D preConcatenate(final AffineGet affine) {
    assert affine.numSourceDimensions() >= 2
        : "Only >=2d affine transformations can be pre-concatenated to a 2d affine transformation.";

    final double am00 = affine.get(0, 0);
    final double am01 = affine.get(0, 1);
    final double am02 = affine.get(0, 2);

    final double am10 = affine.get(1, 0);
    final double am11 = affine.get(1, 1);
    final double am12 = affine.get(1, 2);

    final double a00 = am00 * a.m00 + am01 * a.m10;
    final double a01 = am00 * a.m01 + am01 * a.m11;
    final double a02 = am00 * a.m02 + am01 * a.m12 + am02;

    final double a10 = am10 * a.m00 + am11 * a.m10;
    final double a11 = am10 * a.m01 + am11 * a.m11;
    final double a12 = am10 * a.m02 + am11 * a.m12 + am12;

    a.m00 = a00;
    a.m01 = a01;
    a.m02 = a02;

    a.m10 = a10;
    a.m11 = a11;
    a.m12 = a12;

    invert();
    updateDs();
    inverse.updateDs();

    return this;
  }
Example #3
0
    public AffineMatrix2D copy() {
      final AffineMatrix2D copy = new AffineMatrix2D();

      copy.m00 = m00;
      copy.m01 = m01;
      copy.m02 = m02;

      copy.m10 = m10;
      copy.m11 = m11;
      copy.m12 = m12;

      return copy;
    }
Example #4
0
  @Override
  public AffineTransform2D copy() {
    final AffineMatrix2D ma = new AffineMatrix2D();
    ma.m00 = a.m00;
    ma.m10 = a.m10;

    ma.m01 = a.m01;
    ma.m11 = a.m11;

    ma.m02 = a.m02;
    ma.m12 = a.m12;

    return new AffineTransform2D(ma);
  }
Example #5
0
  /**
   * Scale
   *
   * @param d scale factor
   */
  public void scale(final double d) {
    a.m00 *= d;
    a.m01 *= d;
    a.m02 *= d;
    a.m10 *= d;
    a.m11 *= d;
    a.m12 *= d;

    invert();
    updateDs();
    inverse.updateDs();
  }
Example #6
0
  protected void invert() {
    final double det = a.det();

    /* similar to Jama, throw a RunTimeException for singular matrices. */
    if (det == 0) throw new RuntimeException("Matrix is singular.");

    final double idet = 1.0 / det;

    inverse.a.m00 = a.m11 * idet;
    inverse.a.m01 = -a.m01 * idet;
    inverse.a.m02 = (a.m01 * a.m12 - a.m02 * a.m11) * idet;

    inverse.a.m10 = -a.m10 * idet;
    inverse.a.m11 = a.m00 * idet;
    inverse.a.m12 = (a.m02 * a.m10 - a.m00 * a.m12) * idet;
  }
Example #7
0
  @Override
  public void set(final double[][] values) {
    assert values.length >= 2 && values[0].length >= 3 && values[1].length == 3
        : "Input dimensions do not match.  A 2d affine matrix is a 2x3 matrix.";

    a.m00 = values[0][0];
    a.m01 = values[0][1];
    a.m02 = values[0][2];

    a.m10 = values[1][0];
    a.m11 = values[1][1];
    a.m12 = values[1][2];

    updateDs();
    invert();
    inverse.updateDs();
  }
Example #8
0
  @Override
  public void set(final double... values) {
    assert values.length >= 6
        : "Input dimensions do not match.  A 2d affine matrix is a 2x3 matrix.";

    a.m00 = values[0];
    a.m01 = values[1];
    a.m02 = values[2];

    a.m10 = values[3];
    a.m11 = values[4];
    a.m12 = values[5];

    updateDs();
    invert();
    inverse.updateDs();
  }
Example #9
0
  public final AffineTransform2D preConcatenate(final AffineTransform2D affine) {
    final double a00 = affine.a.m00 * a.m00 + affine.a.m01 * a.m10;
    final double a01 = affine.a.m00 * a.m01 + affine.a.m01 * a.m11;
    final double a02 = affine.a.m00 * a.m02 + affine.a.m01 * a.m12 + affine.a.m02;

    final double a10 = affine.a.m10 * a.m00 + affine.a.m11 * a.m10;
    final double a11 = affine.a.m10 * a.m01 + affine.a.m11 * a.m11;
    final double a12 = affine.a.m10 * a.m02 + affine.a.m11 * a.m12 + affine.a.m12;

    a.m00 = a00;
    a.m01 = a01;
    a.m02 = a02;

    a.m10 = a10;
    a.m11 = a11;
    a.m12 = a12;

    invert();
    updateDs();
    inverse.updateDs();

    return this;
  }
Example #10
0
  public final AffineTransform2D concatenate(final AffineTransform2D model) {
    final double a00 = a.m00 * model.a.m00 + a.m01 * model.a.m10;
    final double a01 = a.m00 * model.a.m01 + a.m01 * model.a.m11;
    final double a02 = a.m00 * model.a.m02 + a.m01 * model.a.m12 + a.m02;

    final double a10 = a.m10 * model.a.m00 + a.m11 * model.a.m10;
    final double a11 = a.m10 * model.a.m01 + a.m11 * model.a.m11;
    final double a12 = a.m10 * model.a.m02 + a.m11 * model.a.m12 + a.m12;

    a.m00 = a00;
    a.m01 = a01;
    a.m02 = a02;

    a.m10 = a10;
    a.m11 = a11;
    a.m12 = a12;

    invert();
    updateDs();
    inverse.updateDs();

    return this;
  }
Example #11
0
  @Override
  public void set(final double value, final int row, final int column) {
    assert row >= 0 && row < 2 && column >= 0 && column < 3
        : "Index out of bounds, a 2d affine matrix is a 2x3 matrix.";

    switch (row) {
      case 0:
        switch (column) {
          case 0:
            a.m00 = value;
            break;
          case 1:
            a.m01 = value;
            break;
          default:
            a.m02 = value;
        }
        break;
      default:
        switch (column) {
          case 0:
            a.m10 = value;
            break;
          case 1:
            a.m11 = value;
            break;
          default:
            a.m12 = value;
            break;
        }
    }

    updateDs();
    invert();
    inverse.updateDs();
  }
Example #12
0
  public final void set(final AffineTransform2D m) {
    a.m00 = m.a.m00;
    a.m10 = m.a.m10;
    a.m01 = m.a.m01;
    a.m11 = m.a.m11;
    a.m02 = m.a.m02;
    a.m12 = m.a.m12;

    inverse.a.m00 = m.inverse.a.m00;
    inverse.a.m10 = m.inverse.a.m10;
    inverse.a.m01 = m.inverse.a.m01;
    inverse.a.m11 = m.inverse.a.m11;
    inverse.a.m02 = m.inverse.a.m02;
    inverse.a.m12 = m.inverse.a.m12;

    updateDs();
    inverse.updateDs();
  }