Guest User

Untitled

a guest
Sep 23rd, 2013
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.gurniak.accelerometer.test;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Calendar;
  5. import java.util.Random;
  6.  
  7. import com.badlogic.gdx.ApplicationListener;
  8. import com.badlogic.gdx.Gdx;
  9. import com.badlogic.gdx.graphics.GL10;
  10. import com.badlogic.gdx.graphics.OrthographicCamera;
  11. import com.badlogic.gdx.graphics.g2d.BitmapFont;
  12. import com.badlogic.gdx.graphics.g2d.SpriteBatch;
  13. import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
  14. import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
  15. import com.badlogic.gdx.math.Vector2;
  16. import com.badlogic.gdx.utils.Array;
  17. import com.badlogic.gdx.utils.TimeUtils;
  18.  
  19. public class Accelerometer_Test implements ApplicationListener {
  20.     private static final String TAG = "AccelerometerTest";
  21.  
  22.     private final int SCREEN_WIDTH = 800;
  23.     private final int SCREEN_HEIGHT = 480;
  24.     private final int MAX_NUM_POINTS = 500;
  25.  
  26.     private OrthographicCamera camera;
  27.     private ShapeRenderer shapeRenderer;
  28.     private Array<Vector2> pointsX;
  29.  
  30.     private float[] verticesX;
  31.  
  32.     @Override
  33.     public void create() {
  34.         camera = new OrthographicCamera();
  35.         camera.setToOrtho(false, SCREEN_WIDTH, SCREEN_HEIGHT);
  36.         shapeRenderer = new ShapeRenderer();
  37.         pointsX = new Array<Vector2>();
  38.  
  39.         updateChart(Gdx.input.getAccelerometerX(), pointsX);
  40.     }
  41.  
  42.     @Override
  43.     public void render() {
  44.         Gdx.gl.glClearColor(0.2f, 0.2f, 0.2f, 1);
  45.         Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
  46.  
  47.         Gdx.gl20.glLineWidth(3);
  48.  
  49.         camera.update();
  50.         shapeRenderer.setProjectionMatrix(camera.combined);
  51.  
  52.         // Drawing chart
  53.  
  54.         shapeRenderer.begin(ShapeType.Line);
  55.  
  56.         shapeRenderer.setColor(1, 0, 0, 1);
  57.  
  58.         if (pointsX.size > 1) {
  59.             shapeRenderer.polyline(verticesX);
  60.         }
  61.  
  62.         shapeRenderer.end();
  63.  
  64.         // Updating chart
  65.        
  66.         if(pointsX.size < MAX_NUM_POINTS) {
  67.             updateChart(Gdx.input.getAccelerometerX(), pointsX);
  68.         }
  69.  
  70.         if (pointsX.size > 1) {
  71.             verticesX = getVertices(pointsX);
  72.         }
  73.  
  74.     }
  75.  
  76.     // Transforms Array of Vector2 (x,y) into float[] array of points [x,y,x,y...]
  77.     private float[] getVertices(Array<Vector2> points) {
  78.         float[] result = new float[points.size * 2];
  79.         int indeks = 0;
  80.  
  81.         for (int i = 0; i < result.length; i++) {
  82.             if (i % 2 == 0) {
  83.                 result[i] = points.get(indeks).x;
  84.             } else {
  85.                 result[i] = points.get(indeks).y;
  86.                 indeks++;
  87.             }
  88.         }
  89.  
  90.         return result;
  91.     }
  92.  
  93.     // recalculates X values of points
  94.     private void updateChart(float newValue, Array<Vector2> points) {
  95.         newValue = (newValue * 10) + SCREEN_HEIGHT / 2;
  96.  
  97.         if (points.size <= 1) {
  98.             points.add(new Vector2(0, newValue));
  99.         } else {
  100.             if (points.size < MAX_NUM_POINTS) {
  101.                 int step = (int) Math.ceil(SCREEN_WIDTH / ((points.size - 1) * 1.0));
  102.  
  103.                 points.add(new Vector2(0, newValue));
  104.  
  105.                 for (int i = 0; i < points.size; i++) {
  106.                     points.get(i).x = (i * step);
  107.                 }
  108.  
  109.                 if (points.get(points.size - 1).x != SCREEN_WIDTH) {
  110.                     points.get(points.size - 1).x = SCREEN_WIDTH;
  111.                 }
  112.  
  113.             }
  114.         }
  115.     }
  116.  
  117.     @Override
  118.     public void dispose() {
  119.         shapeRenderer.dispose();
  120.         pointsX.clear();
  121.     }
  122.  
  123.     @Override
  124.     public void resize(int width, int height) {
  125.     }
  126.  
  127.     @Override
  128.     public void pause() {
  129.     }
  130.  
  131.     @Override
  132.     public void resume() {
  133.     }
  134. }
Advertisement
Add Comment
Please, Sign In to add comment