Layer.java :  » Tools » autoandroid » com » example » android » apis » graphics » kube » Android Open Source

Android Open Source » Tools » autoandroid 
autoandroid » com » example » android » apis » graphics » kube » Layer.java
/*
 * Copyright (C) 2008 The Android Open Source Project
 *
 * 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.example.android.apis.graphics.kube;

public class Layer {
  
  public Layer(int axis) {
    // start with identity matrix for transformation
    mAxis = axis;
    mTransform.setIdentity();
  }
  
  public void startAnimation() {
    for (int i = 0; i < mShapes.length; i++) {
      GLShape shape = mShapes[i];
      if (shape != null) {
        shape.startAnimation();
      }  
    }
  }

  public void endAnimation() {
    for (int i = 0; i < mShapes.length; i++) {
      GLShape shape = mShapes[i];
      if (shape != null) {
        shape.endAnimation();
      }  
    }
  }
  
  public void setAngle(float angle) {
    // normalize the angle
    float twopi = (float)Math.PI *2f;
    while (angle >= twopi) angle -= twopi;
    while (angle < 0f) angle += twopi;
//    mAngle = angle;
    
    float sin = (float)Math.sin(angle);
    float cos = (float)Math.cos(angle);
    
    float[][] m = mTransform.m;
    switch (mAxis) {
      case kAxisX:
        m[1][1] = cos;
        m[1][2] = sin;
        m[2][1] = -sin;
        m[2][2] = cos;
        m[0][0] = 1f;
        m[0][1] = m[0][2] = m[1][0] = m[2][0] = 0f;
        break;
      case kAxisY:
        m[0][0] = cos;
        m[0][2] = sin;
        m[2][0] = -sin;
        m[2][2] = cos;
        m[1][1] = 1f;
        m[0][1] = m[1][0] = m[1][2] = m[2][1] = 0f;
        break;
      case kAxisZ:
        m[0][0] = cos;
        m[0][1] = sin;
        m[1][0] = -sin;
        m[1][1] = cos;
        m[2][2] = 1f;
        m[2][0] = m[2][1] = m[0][2] = m[1][2] = 0f;
        break;
    }
    
    for (int i = 0; i < mShapes.length; i++) {
      GLShape shape = mShapes[i];
      if (shape != null) {
        shape.animateTransform(mTransform);
      }
    }
  }
  
  GLShape[] mShapes = new GLShape[9];
  M4 mTransform = new M4();
//  float mAngle;

  // which axis do we rotate around?
  // 0 for X, 1 for Y, 2 for Z
  int mAxis;
  static public final int kAxisX = 0;
  static public final int kAxisY = 1;
  static public final int kAxisZ = 2;  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.