Android Open Source - jmini3d Utils






From Project

Back to project page jmini3d.

License

The source code is released under:

Copyright 2012 Mobialia http://www.mobialia.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to ...

If you think the Android project jmini3d 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

package jmini3d;
/*www .j  a va  2s  .  c o  m*/
public class Utils {
  public static float PI = (float) Math.PI;

  public static void getRay(Camera camera, int x, int y, Vector3 ray) {
    int[] viewport = {0, 0, camera.getWidth(), camera.getHeight()};

    gluUnProject(x, camera.getHeight() - y, 0.9f, camera.perspectiveMatrix, viewport, ray);

    // Ray vector
    ray.x -= camera.getPosition().x;
    ray.y -= camera.getPosition().y;
    ray.z -= camera.getPosition().z;
  }

  public static boolean gluUnProject(float winx, float winy, float winz, final float[] perspectiveMatrix,
                     final int[] viewport, Vector3 outCoord) {
    float[] finalMatrix = new float[16];
    float[] in = new float[4];
    float[] out = new float[4];

    // TODO cache
    if (!MatrixUtils.invert(perspectiveMatrix, finalMatrix)) {
      return false;
    }

    in[0] = winx;
    in[1] = winy;
    in[2] = winz;
    in[3] = 1.0f;

    // Map x and y to 0..1
    in[0] = (in[0] - viewport[0]) / viewport[2];
    in[1] = (in[1] - viewport[1]) / viewport[3];

    // Map to range -1..1
    in[0] = in[0] * 2 - 1;
    in[1] = in[1] * 2 - 1;
    in[2] = in[2] * 2 - 1;

    MatrixUtils.multiplyVector(finalMatrix, in, out);
    if (out[3] == 0) {
      return false;
    }
    out[0] /= out[3];
    out[1] /= out[3];
    out[2] /= out[3];

    outCoord.setAll(out[0], out[1], out[2]);
    return true;
  }

  public static float p(float n, float x) {
    return (2f * n - 1f) / (2f * x);
  }

  public static float p256(float n) {
    return (2f * n - 1f) / (2f * 256f);
  }

  public static float p512(float n) {
    return (2f * n - 1f) / (2f * 512f);
  }

  public static float p1024(float n) {
    return (2f * n - 1f) / (2f * 1024f);
  }

  public static float p2048(float n) {
    return (2f * n - 1f) / (2f * 2048f);
  }

  public static float p4096(float n) {
    return (2f * n - 1f) / (2f * 4096f);
  }

}




Java Source Code List

cocoonjs.CocoonJsLinker.java
jmini3d.Blending.java
jmini3d.Camera.java
jmini3d.Color4.java
jmini3d.CubeMapTexture.java
jmini3d.Font.java
jmini3d.GpuObjectStatus.java
jmini3d.MatrixUtils.java
jmini3d.Object3d.java
jmini3d.Rect.java
jmini3d.SceneController.java
jmini3d.Scene.java
jmini3d.Texture.java
jmini3d.Utils.java
jmini3d.Vector3.java
jmini3d.android.Activity3d.java
jmini3d.android.GeometryBuffers.java
jmini3d.android.GlSurfaceView3d.java
jmini3d.android.GpuUploader.java
jmini3d.android.Program.java
jmini3d.android.Renderer3d.java
jmini3d.android.ResourceLoader.java
jmini3d.android.compat.CompatibilityWrapper5.java
jmini3d.android.demo.DemoActivity.java
jmini3d.android.input.InputController.java
jmini3d.demo.ArialFont.java
jmini3d.demo.CubeScene.java
jmini3d.demo.CubesScene.java
jmini3d.demo.DemoSceneController.java
jmini3d.demo.EnvMapCubeScene.java
jmini3d.demo.NormalMapScene.java
jmini3d.demo.ParentScene.java
jmini3d.demo.TeapotGeometry.java
jmini3d.demo.TeapotScene.java
jmini3d.geometry.BoxGeometry.java
jmini3d.geometry.Geometry.java
jmini3d.geometry.PlaneGeometry.java
jmini3d.geometry.SkyboxGeometry.java
jmini3d.geometry.SpriteGeometry.java
jmini3d.geometry.VariableGeometry.java
jmini3d.gwt.Canvas3d.java
jmini3d.gwt.EngineResources.java
jmini3d.gwt.EntryPoint3d.java
jmini3d.gwt.GeometryBuffers.java
jmini3d.gwt.GpuUploader.java
jmini3d.gwt.MyInt16Array.java
jmini3d.gwt.Program.java
jmini3d.gwt.Renderer3d.java
jmini3d.gwt.ResourceLoader.java
jmini3d.gwt.TextureLoadedListener.java
jmini3d.gwt.demo.DemoEntryPoint.java
jmini3d.gwt.input.InputController.java
jmini3d.input.KeyListener.java
jmini3d.input.TouchListener.java
jmini3d.input.TouchPointer.java
jmini3d.light.AmbientLight.java
jmini3d.light.DirectionalLight.java
jmini3d.light.Light.java
jmini3d.light.PointLight.java
jmini3d.material.Material.java
jmini3d.material.PhongMaterial.java
jmini3d.material.SpriteMaterial.java
jmini3d.utils.Fnt2Class.java
jmini3d.utils.Obj2Class.java