Android Open Source - jmini3d Camera






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;
//from  www .  j  av  a 2 s  .  co  m
public class Camera {
  public Vector3 position = new Vector3();
  public Vector3 target = new Vector3();
  public Vector3 upAxis = new Vector3();

  private Vector3 vx = new Vector3();
  private Vector3 vy = new Vector3();
  private Vector3 vz = new Vector3();

  private float fovy = 45;
  private int width = 0;
  private int height = 0;
  private float near = 1;
  private float far = 1000;

  public float[] perspectiveMatrix = new float[16];
  private float[] modelViewMatrix = new float[16];

  private boolean needsMatrixUpdate = true;

  public Camera() {
    setTarget(0, 0, 0);
    setUpAxis(0, 0, 1);
  }

  public void setPosition(float x, float y, float z) {
    if (this.position.x != x || this.position.y != y || this.position.z != z) {
      position.setAll(x, y, z);
      needsMatrixUpdate = true;
    }
  }

  public void setTarget(float x, float y, float z) {
    if (this.target.x != x || this.target.y != y || this.target.z != z) {
      target.setAll(x, y, z);
      needsMatrixUpdate = true;
    }
  }

  public void setUpAxis(float x, float y, float z) {
    if (this.upAxis.x != x || this.upAxis.y != y || this.upAxis.z != z) {
      upAxis.setAll(x, y, z);
      needsMatrixUpdate = true;
    }
  }

  public void setFovy(float fovy) {
    if (this.fovy != fovy) {
      this.fovy = fovy;
      needsMatrixUpdate = true;
    }
  }

  public void setNear(float near) {
    if (this.near != near) {
      this.near = near;
      needsMatrixUpdate = true;
    }
  }

  public void setFar(float far) {
    if (this.far != far) {
      this.far = far;
      needsMatrixUpdate = true;
    }
  }

  public void setWidth(int width) {
    if (this.width != width) {
      this.width = width;
      needsMatrixUpdate = true;
    }
  }

  public void setHeight(int height) {
    if (this.height != height) {
      this.height = height;
      needsMatrixUpdate = true;
    }
  }

  public Vector3 getPosition() {
    return position;
  }

  public Vector3 getTarget() {
    return target;
  }

  public Vector3 getUpAxis() {
    return upAxis;
  }

  public float getFovy() {
    return fovy;
  }

  public float getFovx() {
    return (float) (360 / Utils.PI * Math.atan(Math.tan(fovy * Utils.PI / 360) * width / height));
  }

  public float getNear() {
    return near;
  }

  public float getFar() {
    return far;
  }

  public int getWidth() {
    return width;
  }

  public int getHeight() {
    return height;
  }

  public boolean updateMatrices() {
    if (needsMatrixUpdate) {
      MatrixUtils.perspective(perspectiveMatrix, fovy, ((float) width) / height, near, far);
      MatrixUtils.lookAt(modelViewMatrix, position, target, upAxis, vx, vy, vz);
      MatrixUtils.multiply(perspectiveMatrix, modelViewMatrix, perspectiveMatrix);

      needsMatrixUpdate = false;
      return true;
    }
    return false;
  }
}




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