1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.example.android.rs.vr.engine; 17 18 import java.text.*; 19 import java.util.Arrays; 20 21 public class Cube extends TriData { 22 23 private float[] mTrim = {0, 0, 0, 0, 0, 0 }; 24 Cube(Volume v, float delta)25 public Cube(Volume v, float delta) { 26 this(v, delta, new float[]{0, 0, 0, 0, 0, 0}); 27 } 28 Cube(Volume v, float delta, float[] trim)29 public Cube(Volume v, float delta, float[] trim) { 30 this(); 31 this.mTrim = trim; 32 float minx = delta + trim[0] * (v.mDimx - delta); 33 float miny = delta + trim[1] * (v.mDimy - delta); 34 float minz = delta + trim[2] * (v.mDimz - delta); 35 float maxx = v.mDimx - delta - trim[3] * (v.mDimx - delta); 36 float maxy = v.mDimy - delta - trim[4] * (v.mDimy - delta); 37 float maxz = v.mDimz - delta - trim[5] * (v.mDimz - delta); 38 mVert = new float[]{ 39 minx, miny, minz, 40 maxx, miny, minz, 41 maxx, maxy, minz, 42 minx, maxy, minz, 43 minx, miny, maxz, 44 maxx, miny, maxz, 45 maxx, maxy, maxz, 46 minx, maxy, maxz, 47 }; 48 } 49 clone(Cube src)50 public void clone(Cube src) { 51 System.arraycopy(src.mTrim, 0, mTrim, 0, mTrim.length); 52 mVert = Arrays.copyOf(src.mVert, src.mVert.length); 53 mIndex = Arrays.copyOf(src.mIndex, src.mIndex.length); 54 } 55 getTrim()56 public float[] getTrim() { 57 return mTrim; 58 } 59 60 @Override toString()61 public String toString() { 62 return "CUBE[" + fs(mVert, 0, 3) + "][" + fs(mVert, 18, 3) + "]"; 63 } 64 fs(float[] f, int off, int n)65 private static String fs(float[] f, int off, int n) { 66 DecimalFormat df = new DecimalFormat("##0.000"); 67 String ret = ""; 68 for (int i = off; i < off + n; i++) { 69 String s = " " + df.format(f[i]); 70 71 if (i != off) { 72 ret += ","; 73 } 74 ret += s.substring(s.length() - 8); 75 76 } 77 return ret; 78 } 79 Cube()80 public Cube() { 81 mVert = new float[]{ 82 -1.f, -1.f, -1.f, 83 1.f, -1.f, -1.f, 84 1.f, 1.f, -1.f, 85 -1.f, 1.f, -1.f, 86 -1.f, -1.f, 1.f, 87 1.f, -1.f, 1.f, 88 1.f, 1.f, 1.f, 89 -1.f, 1.f, 1.f, 90 }; 91 92 mIndex = new int[]{ 93 2, 1, 0, 94 0, 3, 2, 95 7, 4, 5, 96 5, 6, 7, 97 1, 2, 6, 98 6, 5, 1, 99 4, 7, 3, 100 3, 0, 4, 101 2, 3, 7, 102 7, 6, 2, 103 0, 1, 5, 104 5, 4, 0 105 }; 106 for (int i = 0; i < mIndex.length; i++) { 107 mIndex[i] *= 3; 108 } 109 } 110 } 111