15b539461dcc159bd89297443780d635ccc5e3564John Hoford/* 25b539461dcc159bd89297443780d635ccc5e3564John Hoford * Copyright (C) 2015 The Android Open Source Project 35b539461dcc159bd89297443780d635ccc5e3564John Hoford * 45b539461dcc159bd89297443780d635ccc5e3564John Hoford * Licensed under the Apache License, Version 2.0 (the "License"); 55b539461dcc159bd89297443780d635ccc5e3564John Hoford * you may not use this file except in compliance with the License. 65b539461dcc159bd89297443780d635ccc5e3564John Hoford * You may obtain a copy of the License at 75b539461dcc159bd89297443780d635ccc5e3564John Hoford * 85b539461dcc159bd89297443780d635ccc5e3564John Hoford * http://www.apache.org/licenses/LICENSE-2.0 95b539461dcc159bd89297443780d635ccc5e3564John Hoford * 105b539461dcc159bd89297443780d635ccc5e3564John Hoford * Unless required by applicable law or agreed to in writing, software 115b539461dcc159bd89297443780d635ccc5e3564John Hoford * distributed under the License is distributed on an "AS IS" BASIS, 125b539461dcc159bd89297443780d635ccc5e3564John Hoford * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135b539461dcc159bd89297443780d635ccc5e3564John Hoford * See the License for the specific language governing permissions and 145b539461dcc159bd89297443780d635ccc5e3564John Hoford * limitations under the License. 155b539461dcc159bd89297443780d635ccc5e3564John Hoford */ 165b539461dcc159bd89297443780d635ccc5e3564John Hofordpackage com.example.android.rs.vr.engine; 175b539461dcc159bd89297443780d635ccc5e3564John Hoford 185b539461dcc159bd89297443780d635ccc5e3564John Hofordimport java.text.*; 195b539461dcc159bd89297443780d635ccc5e3564John Hofordimport java.util.Arrays; 205b539461dcc159bd89297443780d635ccc5e3564John Hoford 215b539461dcc159bd89297443780d635ccc5e3564John Hofordpublic class Cube extends TriData { 225b539461dcc159bd89297443780d635ccc5e3564John Hoford 235b539461dcc159bd89297443780d635ccc5e3564John Hoford private float[] mTrim = {0, 0, 0, 0, 0, 0 }; 245b539461dcc159bd89297443780d635ccc5e3564John Hoford 255b539461dcc159bd89297443780d635ccc5e3564John Hoford public Cube(Volume v, float delta) { 265b539461dcc159bd89297443780d635ccc5e3564John Hoford this(v, delta, new float[]{0, 0, 0, 0, 0, 0}); 275b539461dcc159bd89297443780d635ccc5e3564John Hoford } 285b539461dcc159bd89297443780d635ccc5e3564John Hoford 295b539461dcc159bd89297443780d635ccc5e3564John Hoford public Cube(Volume v, float delta, float[] trim) { 305b539461dcc159bd89297443780d635ccc5e3564John Hoford this(); 315b539461dcc159bd89297443780d635ccc5e3564John Hoford this.mTrim = trim; 325b539461dcc159bd89297443780d635ccc5e3564John Hoford float minx = delta + trim[0] * (v.mDimx - delta); 335b539461dcc159bd89297443780d635ccc5e3564John Hoford float miny = delta + trim[1] * (v.mDimy - delta); 345b539461dcc159bd89297443780d635ccc5e3564John Hoford float minz = delta + trim[2] * (v.mDimz - delta); 355b539461dcc159bd89297443780d635ccc5e3564John Hoford float maxx = v.mDimx - delta - trim[3] * (v.mDimx - delta); 365b539461dcc159bd89297443780d635ccc5e3564John Hoford float maxy = v.mDimy - delta - trim[4] * (v.mDimy - delta); 375b539461dcc159bd89297443780d635ccc5e3564John Hoford float maxz = v.mDimz - delta - trim[5] * (v.mDimz - delta); 385b539461dcc159bd89297443780d635ccc5e3564John Hoford mVert = new float[]{ 395b539461dcc159bd89297443780d635ccc5e3564John Hoford minx, miny, minz, 405b539461dcc159bd89297443780d635ccc5e3564John Hoford maxx, miny, minz, 415b539461dcc159bd89297443780d635ccc5e3564John Hoford maxx, maxy, minz, 425b539461dcc159bd89297443780d635ccc5e3564John Hoford minx, maxy, minz, 435b539461dcc159bd89297443780d635ccc5e3564John Hoford minx, miny, maxz, 445b539461dcc159bd89297443780d635ccc5e3564John Hoford maxx, miny, maxz, 455b539461dcc159bd89297443780d635ccc5e3564John Hoford maxx, maxy, maxz, 465b539461dcc159bd89297443780d635ccc5e3564John Hoford minx, maxy, maxz, 475b539461dcc159bd89297443780d635ccc5e3564John Hoford }; 485b539461dcc159bd89297443780d635ccc5e3564John Hoford } 495b539461dcc159bd89297443780d635ccc5e3564John Hoford 505b539461dcc159bd89297443780d635ccc5e3564John Hoford public void clone(Cube src) { 515b539461dcc159bd89297443780d635ccc5e3564John Hoford System.arraycopy(src.mTrim, 0, mTrim, 0, mTrim.length); 525b539461dcc159bd89297443780d635ccc5e3564John Hoford mVert = Arrays.copyOf(src.mVert, src.mVert.length); 535b539461dcc159bd89297443780d635ccc5e3564John Hoford mIndex = Arrays.copyOf(src.mIndex, src.mIndex.length); 545b539461dcc159bd89297443780d635ccc5e3564John Hoford } 555b539461dcc159bd89297443780d635ccc5e3564John Hoford 565b539461dcc159bd89297443780d635ccc5e3564John Hoford public float[] getTrim() { 575b539461dcc159bd89297443780d635ccc5e3564John Hoford return mTrim; 585b539461dcc159bd89297443780d635ccc5e3564John Hoford } 595b539461dcc159bd89297443780d635ccc5e3564John Hoford 605b539461dcc159bd89297443780d635ccc5e3564John Hoford @Override 615b539461dcc159bd89297443780d635ccc5e3564John Hoford public String toString() { 625b539461dcc159bd89297443780d635ccc5e3564John Hoford return "CUBE[" + fs(mVert, 0, 3) + "][" + fs(mVert, 18, 3) + "]"; 635b539461dcc159bd89297443780d635ccc5e3564John Hoford } 645b539461dcc159bd89297443780d635ccc5e3564John Hoford 655b539461dcc159bd89297443780d635ccc5e3564John Hoford private static String fs(float[] f, int off, int n) { 665b539461dcc159bd89297443780d635ccc5e3564John Hoford DecimalFormat df = new DecimalFormat("##0.000"); 675b539461dcc159bd89297443780d635ccc5e3564John Hoford String ret = ""; 685b539461dcc159bd89297443780d635ccc5e3564John Hoford for (int i = off; i < off + n; i++) { 695b539461dcc159bd89297443780d635ccc5e3564John Hoford String s = " " + df.format(f[i]); 705b539461dcc159bd89297443780d635ccc5e3564John Hoford 715b539461dcc159bd89297443780d635ccc5e3564John Hoford if (i != off) { 725b539461dcc159bd89297443780d635ccc5e3564John Hoford ret += ","; 735b539461dcc159bd89297443780d635ccc5e3564John Hoford } 745b539461dcc159bd89297443780d635ccc5e3564John Hoford ret += s.substring(s.length() - 8); 755b539461dcc159bd89297443780d635ccc5e3564John Hoford 765b539461dcc159bd89297443780d635ccc5e3564John Hoford } 775b539461dcc159bd89297443780d635ccc5e3564John Hoford return ret; 785b539461dcc159bd89297443780d635ccc5e3564John Hoford } 795b539461dcc159bd89297443780d635ccc5e3564John Hoford 805b539461dcc159bd89297443780d635ccc5e3564John Hoford public Cube() { 815b539461dcc159bd89297443780d635ccc5e3564John Hoford mVert = new float[]{ 825b539461dcc159bd89297443780d635ccc5e3564John Hoford -1.f, -1.f, -1.f, 835b539461dcc159bd89297443780d635ccc5e3564John Hoford 1.f, -1.f, -1.f, 845b539461dcc159bd89297443780d635ccc5e3564John Hoford 1.f, 1.f, -1.f, 855b539461dcc159bd89297443780d635ccc5e3564John Hoford -1.f, 1.f, -1.f, 865b539461dcc159bd89297443780d635ccc5e3564John Hoford -1.f, -1.f, 1.f, 875b539461dcc159bd89297443780d635ccc5e3564John Hoford 1.f, -1.f, 1.f, 885b539461dcc159bd89297443780d635ccc5e3564John Hoford 1.f, 1.f, 1.f, 895b539461dcc159bd89297443780d635ccc5e3564John Hoford -1.f, 1.f, 1.f, 905b539461dcc159bd89297443780d635ccc5e3564John Hoford }; 915b539461dcc159bd89297443780d635ccc5e3564John Hoford 925b539461dcc159bd89297443780d635ccc5e3564John Hoford mIndex = new int[]{ 935b539461dcc159bd89297443780d635ccc5e3564John Hoford 2, 1, 0, 945b539461dcc159bd89297443780d635ccc5e3564John Hoford 0, 3, 2, 955b539461dcc159bd89297443780d635ccc5e3564John Hoford 7, 4, 5, 965b539461dcc159bd89297443780d635ccc5e3564John Hoford 5, 6, 7, 975b539461dcc159bd89297443780d635ccc5e3564John Hoford 1, 2, 6, 985b539461dcc159bd89297443780d635ccc5e3564John Hoford 6, 5, 1, 995b539461dcc159bd89297443780d635ccc5e3564John Hoford 4, 7, 3, 1005b539461dcc159bd89297443780d635ccc5e3564John Hoford 3, 0, 4, 1015b539461dcc159bd89297443780d635ccc5e3564John Hoford 2, 3, 7, 1025b539461dcc159bd89297443780d635ccc5e3564John Hoford 7, 6, 2, 1035b539461dcc159bd89297443780d635ccc5e3564John Hoford 0, 1, 5, 1045b539461dcc159bd89297443780d635ccc5e3564John Hoford 5, 4, 0 1055b539461dcc159bd89297443780d635ccc5e3564John Hoford }; 1065b539461dcc159bd89297443780d635ccc5e3564John Hoford for (int i = 0; i < mIndex.length; i++) { 1075b539461dcc159bd89297443780d635ccc5e3564John Hoford mIndex[i] *= 3; 1085b539461dcc159bd89297443780d635ccc5e3564John Hoford } 1095b539461dcc159bd89297443780d635ccc5e3564John Hoford } 1105b539461dcc159bd89297443780d635ccc5e3564John Hoford} 111