Android Open Source - flingbox Gravity Source






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
 *//from w  w  w  . jav  a 2  s .  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.physics.gravity;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

import edu.eside.flingbox.math.Vector2D;

/**
 * Gravity Source defines a gravity vector.
 *
 */
public class GravitySource extends Vector2D implements SensorEventListener {
  /** Empirical value for a gravity multiply factor */
  private static final float FACTOR = 80f;
  
  public static final float GRAVITY_SUN = 275.0f;
  
  public static final float GRAVITY_MERCURY = 3.7f;
  public static final float GRAVITY_VENUS = 8.87f;
  public static final float GRAVITY_EARTH = 9.80665f;
  public static final float GRAVITY_MARS = 3.71f;
  public static final float GRAVITY_JUPITER = 23.12f;
  public static final float GRAVITY_SATURN = 8.96f;
  public static final float GRAVITY_NEPTUNE = 11.0f;
  public static final float GRAVITY_PLUTO = 0.6f;
  
  public static final float GRAVITY_MOON = 1.6f;
  public static final float GRAVITY_DEATH_STAR = 3.5303614E-7f;
  

  public static GravitySource getAccelerometerBasedGravity(Context c) {
    // Get Manager from context
    SensorManager sensorManager = (SensorManager) c.getSystemService(Context.SENSOR_SERVICE);
    // Request Accelerometer
    Sensor accelSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    
    GravitySource gravity = new GravitySource();
    // Set accelerometer event callback
    sensorManager.registerListener(gravity, accelSensor, SensorManager.SENSOR_DELAY_FASTEST);
    
    return gravity;
  }
  
  public static GravitySource getStaticGravity(Vector2D v) {
    return new GravitySource(v);
  }
  
  public static GravitySource getStaticGravity(float i, float j) {
    return new GravitySource(i, j);
  }
  
  private GravitySource() {
    super();
  }
  
  private GravitySource(Vector2D v) {
    super(v.mul(FACTOR));
  }
  
  private GravitySource(float i, float j) {
    super(i * FACTOR, j * FACTOR);
  }

  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
    
  }

  @Override
  public void onSensorChanged(SensorEvent event) {
    this.i = -event.values[SensorManager.DATA_X] * FACTOR;
    this.j = -event.values[SensorManager.DATA_Y] * FACTOR;
  }
}




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