Android Open Source - flingbox Matrix22






From Project

Back to project page flingbox.

License

The source code is released under:

GNU General Public License

If you think the Android project flingbox listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 *  Flingbox - An OpenSource physics sandbox for Google's Android
 *  Copyright (C) 2009  Jon Ander Pealba & Endika Gutirrez
 */* www.  j a v a 2s  .co m*/
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package edu.eside.flingbox.math;

/**
 * Basic 2x2 matrix implementation
 * This will be used to storage rotational matrix
 */
public class Matrix22 {
  /** Matrix values */
  public float[] values;
  
  /** 
   * Creates zero matrix 
   */
  public Matrix22() {
    this.values = new float[4]; 
  }
  
  /**
   * Creates matrix with values
   * 
   * @param m  Values. should have 4 members
   */
  public Matrix22(float[] m) {
    this.values = m;
  }
  
  /**
   * Constructor for a Rotation matrix
   * 
   * @param angle  Angle for rotation
   */
  public Matrix22(float angle) {
    final float cos = (float) Math.cos(angle);
    final float sin = (float) Math.sin(angle);
    
    this.values = new float[] {cos, -sin, 
                  sin, cos};
  }
  
  /**
   * Creates the transpose of the matrix
   * 
   * @return  New resulting matrix
   */
  public static Matrix22 transpose(Matrix22 m) {
    return new Matrix22(new float[] {
        m.values[0], m.values[2], 
        m.values[1], m.values[3]});
  }
  
  /**
   * Transposes matrix
   * 
   * @return  current matrix
   */
  public Matrix22 transpose() {
    float temp = this.values[1]; // Just swap 0,1 and 1,0
    this.values[1] = this.values[2];
    this.values[2] = temp;
    return this;
  }
  
  /**
   * Computes matrix invert
   * 
   * @return  New matrix with inverted current matrix or null if determinant is Zero
   */
  public static Matrix22 invert(Matrix22 m) {
    final float det = m.determinant();
    if (det == 0)
      return null;
    
    return new Matrix22(new float[] {
        m.values[3] / det, m.values[1] / det, 
        m.values[2] / det, m.values[0] / det});
  }
  
  /**
   * Computes matrix invert
   * 
   * @return  Current matrix with inverted current matrix or null if determinant is Zero
   */
  public Matrix22 invert() {
    final float det = determinant();
    if (det == 0)
      return null;
    
    this.values = new float[] {
        values[3] / det, values[1] / det, 
        values[2] / det, values[0] / det};
    return this;
  }
  
  /**
   * Computes determinant
   * 
   * @return  determinant
   */
  public float determinant() {
    return values[0] * values[3] - values[1]* values[2];
  }
  
  /**
   * Return a string representing the matrix
   */
  public String toString() {
    return "[Matrix22 (" + values[0] + ", " + values[1] + ", " + values[2] + ", " + values[3] + ")]";
  }
}




Java Source Code List

edu.eside.flingbox.BodySettingsDialog.java
edu.eside.flingbox.FlingboxActivity.java
edu.eside.flingbox.PreferencesActivity.java
edu.eside.flingbox.Preferences.java
edu.eside.flingbox.bodies.Body.java
edu.eside.flingbox.bodies.Polygon.java
edu.eside.flingbox.graphics.RenderBody.java
edu.eside.flingbox.graphics.RenderCamera.java
edu.eside.flingbox.graphics.RenderPolygon.java
edu.eside.flingbox.graphics.SceneRenderer.java
edu.eside.flingbox.input.SceneGestureDetector.java
edu.eside.flingbox.math.Intersect.java
edu.eside.flingbox.math.Matrix22.java
edu.eside.flingbox.math.PolygonUtils.java
edu.eside.flingbox.math.Vector2D.java
edu.eside.flingbox.physics.PhysicAtomicBody.java
edu.eside.flingbox.physics.PhysicBody.java
edu.eside.flingbox.physics.PhysicPolygon.java
edu.eside.flingbox.physics.ScenePhysics.java
edu.eside.flingbox.physics.collisions.Arbiter.java
edu.eside.flingbox.physics.collisions.ColliderPolygon.java
edu.eside.flingbox.physics.collisions.Collider.java
edu.eside.flingbox.physics.collisions.ContactSolver.java
edu.eside.flingbox.physics.collisions.Contact.java
edu.eside.flingbox.physics.gravity.GravitySource.java
edu.eside.flingbox.scene.DrawingBody.java
edu.eside.flingbox.scene.DrawingPolygon.java
edu.eside.flingbox.scene.Scene.java
edu.eside.flingbox.utils.PositionComparator.java
edu.eside.flingbox.xml.InvalidXmlException.java
edu.eside.flingbox.xml.XmlExporter.java
edu.eside.flingbox.xml.XmlImporter.java