Android Open Source - Schooner-3D Utils






From Project

Back to project page Schooner-3D.

License

The source code is released under:

Apache License

If you think the Android project Schooner-3D 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

/*
 * Copyright 2012 Dan Mercer//from ww  w .  ja  va 2s .  c  o m
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.supermercerbros.gameengine.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

import android.content.res.AssetManager;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;

public class Utils {
  /**
   * Returns the length of a vector given the vector's three coordinates. This
   * uses the Pythagorean theorem (hence it's name).
   * 
   * @see <a
   *      href="http://en.wikipedia.org/wiki/Pythagorean_theorem">Pythagorean
   *      Theorem</a> (Wikipedia)
   * 
   * @param x
   *            The x-coordinate.
   * @param y
   *            The y-coordinate.
   * @param z
   *            The z-coordinate.
   * @return The length of the vector.
   */
  public static float pythagF(float x, float y, float z) {
    return (float) android.util.FloatMath.sqrt((x * x) + (y * y) + (z * z));
  }

  /**
   * Returns the length of a vector given the vector's three coordinates. This
   * uses the Pythagorean theorem (hence it's name).
   * 
   * @see <a
   *      href="http://en.wikipedia.org/wiki/Pythagorean_theorem">Pythagorean
   *      Theorem</a> (Wikipedia)
   * 
   * @param x
   *            The x-coordinate.
   * @param y
   *            The y-coordinate.
   * @param z
   *            The z-coordinate.
   * @return The length of the vector.
   */
  public static double pythagD(double x, double y, double z) {
    return Math.sqrt(x * x + y * y + z * z);
  }

  /**
   * Creates a perspective projection matrix.
   * 
   * @param m
   *            The float array to write the matrix to
   * @param offset
   *            The offset into array m where the matrix is written
   * @param fov
   *            The field-of-view angle, in degrees.
   * @param aspect
   *            The aspect ratio
   * @param near
   *            The near clip plane
   * @param far
   *            The far clip plane
   */
  public static void perspectiveM(float[] m, int offset, float fov,
      float aspect, float near, float far) {
    fov = (float) Math.toRadians(fov);
    float f = (float) Math.tan(0.5 * (Math.PI - fov));
    float range = near - far;

    m[0] = f / aspect;
    m[1] = 0;
    m[2] = 0;
    m[3] = 0;

    m[4] = 0;
    m[5] = f;
    m[6] = 0;
    m[7] = 0;

    m[8] = 0;
    m[9] = 0;
    m[10] = far / range;
    m[11] = -1;

    m[12] = 0;
    m[13] = 0;
    m[14] = near * far / range;
    m[15] = 0;
  }

  public static String readAssetAsString(AssetManager assets, String filename)
      throws IOException {
    StringBuilder sb = new StringBuilder();
    Scanner reader = new Scanner(assets.open(filename));
    while (reader.hasNextLine()) {
      sb.append(reader.nextLine() + "\n");
    }
    return sb.toString();
  }

  public static String readResourceAsString(Resources res, int resId)
      throws NotFoundException {
    StringBuilder sb = new StringBuilder();
    Scanner reader = new Scanner(res.openRawResource(resId));
    while (reader.hasNextLine()) {
      sb.append(reader.nextLine() + "\n");
    }
    return sb.toString();
  }

  /**
   * Reads the contents of the given InputStream. Uses the default charset.
   * NOTE: This method does not close the InputStream.
   * @param is
   * @return
   */
  public static String readInputStreamAsString(InputStream is) {
    StringBuilder sb = new StringBuilder();
    Scanner reader = new Scanner(is);
    while (reader.hasNextLine()) {
      sb.append(reader.nextLine() + "\n");
    }
    return sb.toString();
  }

  public static boolean checkBit(byte flags, int place) {
    return (flags & (1 << place)) != 0;
  }
  
  public static boolean[] checkBits(byte flags, int count) {
    if (count > 8) {
      throw new IllegalArgumentException("count is greater than 8");
    }
    boolean[] result = new boolean[count];
    for (int i = 0; i < count; i++) {
      result[i] = (flags & (1 << i)) != 0;
    }
    return result;
  }

  public static int search(short[] array, int begin, int end, int value) {
    if (array[begin] == value) {
      return begin;
    } else if (array[end] == value) {
      return end;
    } else if (begin + 1 == end) {
      return -1;
    } else {
      int middle = (begin + end) / 2;
      if (array[middle] > value) {
        return search(array, begin, middle, value);
      } else if (array[middle] < value) {
        return search(array, middle, end, value);
      } else {
        return middle;
      }
    }
  }
  
  public static String vboToString(int[] vbo, int offset, int length) {
    StringBuilder sb = new StringBuilder("[");
    
    if (offset > 0) {
      sb.append(" ... ");
    }
    
    for (int i = offset; i < offset + length; i++) {
      sb.append(Float.intBitsToFloat(vbo[i]));
      if (i < vbo.length - 1) {
        sb.append(", ");
      }
    }
    
    if (offset + length < vbo.length) {
      sb.append(" ... ");
    }
    sb.append("]");
    
    if (offset > 0 || offset + length < vbo.length) {
      sb.append(" (" + length + " floats)");
    }
    return sb.toString();
  }

  public static String iboToString(short[] ibo, int offset, int length) {
    StringBuilder sb = new StringBuilder("[");
    
    if (offset > 0) {
      sb.append(" ... ");
    }
    
    for (int i = offset; i < offset + length; i++) {
      sb.append(ibo[i]);
      if (i < ibo.length - 1) {
        sb.append(", ");
      }
    }
    
    if (offset + length < ibo.length) {
      sb.append(" ... ");
    }
    sb.append("]");
    
    if (offset > 0 || offset + length < ibo.length) {
      sb.append(" (" + length + " shorts)");
    }
    return sb.toString();
  }
}




Java Source Code List

com.supermercerbros.gameengine.GameActivity.java
com.supermercerbros.gameengine.GameView.java
com.supermercerbros.gameengine.Schooner3D.java
com.supermercerbros.gameengine.TestActivity.java
com.supermercerbros.gameengine.TestMaterials.java
com.supermercerbros.gameengine.TestObjects.java
com.supermercerbros.gameengine.animation.AnimationData.java
com.supermercerbros.gameengine.animation.Keyframe.java
com.supermercerbros.gameengine.animation.MeshAnimation.java
com.supermercerbros.gameengine.armature.ActionData.java
com.supermercerbros.gameengine.armature.Action.java
com.supermercerbros.gameengine.armature.BinarySkeletalVertexModifier.java
com.supermercerbros.gameengine.armature.Bone.java
com.supermercerbros.gameengine.armature.SkeletalVertexModifier.java
com.supermercerbros.gameengine.armature.Skeleton.java
com.supermercerbros.gameengine.collision.Bounds.java
com.supermercerbros.gameengine.collision.Collider.java
com.supermercerbros.gameengine.collision.CollisionDetector.java
com.supermercerbros.gameengine.collision.Collision.java
com.supermercerbros.gameengine.collision.DebugListener.java
com.supermercerbros.gameengine.collision.Edge.java
com.supermercerbros.gameengine.collision.Face.java
com.supermercerbros.gameengine.collision.Feature.java
com.supermercerbros.gameengine.collision.Intersection.java
com.supermercerbros.gameengine.collision.Line.java
com.supermercerbros.gameengine.collision.LocalDistMinimum.java
com.supermercerbros.gameengine.collision.Matrix.java
com.supermercerbros.gameengine.collision.OnCollisionCheckFinishedListener.java
com.supermercerbros.gameengine.collision.Plane.java
com.supermercerbros.gameengine.collision.Point.java
com.supermercerbros.gameengine.collision.Polyhedron.java
com.supermercerbros.gameengine.collision.SphereBounds.java
com.supermercerbros.gameengine.collision.Vector.java
com.supermercerbros.gameengine.collision.Vertex.java
com.supermercerbros.gameengine.debug.JankCatcher.java
com.supermercerbros.gameengine.debug.LoopLog.java
com.supermercerbros.gameengine.engine.Camera.java
com.supermercerbros.gameengine.engine.DataPipe.java
com.supermercerbros.gameengine.engine.EGLContextLostHandler.java
com.supermercerbros.gameengine.engine.Engine.java
com.supermercerbros.gameengine.engine.GameRenderer.java
com.supermercerbros.gameengine.engine.Light.java
com.supermercerbros.gameengine.engine.Normals.java
com.supermercerbros.gameengine.engine.RenderData.java
com.supermercerbros.gameengine.engine.Scene.java
com.supermercerbros.gameengine.engine.Time.java
com.supermercerbros.gameengine.engine.shaders.Material.java
com.supermercerbros.gameengine.engine.shaders.Program.java
com.supermercerbros.gameengine.engine.shaders.ShaderLib.java
com.supermercerbros.gameengine.engine.shaders.Shader.java
com.supermercerbros.gameengine.engine.shaders.VertexModifier.java
com.supermercerbros.gameengine.handlers.OnAnimationCompleteDispatcher.java
com.supermercerbros.gameengine.handlers.OnAnimationCompleteListener.java
com.supermercerbros.gameengine.hud.CoordsConverter.java
com.supermercerbros.gameengine.hud.GameHud.java
com.supermercerbros.gameengine.hud.HudElement.java
com.supermercerbros.gameengine.material.CelShadedMaterial.java
com.supermercerbros.gameengine.material.TexturedMaterial.java
com.supermercerbros.gameengine.math.BezierCurve.java
com.supermercerbros.gameengine.math.Curve.java
com.supermercerbros.gameengine.math.MatrixUtils.java
com.supermercerbros.gameengine.math.Quaternion.java
com.supermercerbros.gameengine.motion.CurveMovement.java
com.supermercerbros.gameengine.motion.MovementData.java
com.supermercerbros.gameengine.motion.Movement.java
com.supermercerbros.gameengine.objects.AnimatedMeshObject.java
com.supermercerbros.gameengine.objects.BasicMaterial.java
com.supermercerbros.gameengine.objects.BonedObject.java
com.supermercerbros.gameengine.objects.GameObject.java
com.supermercerbros.gameengine.objects.Metadata.java
com.supermercerbros.gameengine.parsers.ConstantCurve.java
com.supermercerbros.gameengine.parsers.GameFactory.java
com.supermercerbros.gameengine.parsers.PreBoneData.java
com.supermercerbros.gameengine.parsers.PreObjectData.java
com.supermercerbros.gameengine.parsers.Sch3D.java
com.supermercerbros.gameengine.render.Compositor.java
com.supermercerbros.gameengine.shaders.ProgramSource.java
com.supermercerbros.gameengine.texture.BitmapTexture.java
com.supermercerbros.gameengine.texture.ETC1CompressedTexture.java
com.supermercerbros.gameengine.texture.Texture.java
com.supermercerbros.gameengine.util.BetterDataInputStream.java
com.supermercerbros.gameengine.util.DelayedRunnable.java
com.supermercerbros.gameengine.util.GLES2.java
com.supermercerbros.gameengine.util.IPO.java
com.supermercerbros.gameengine.util.LoopingThread.java
com.supermercerbros.gameengine.util.Toggle.java
com.supermercerbros.gameengine.util.Utils.java