/* * Copyright (C) 2015 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.rs.vr.engine; import java.text.*; import java.util.Arrays; public class Cube extends TriData { private float[] mTrim = {0, 0, 0, 0, 0, 0 }; public Cube(Volume v, float delta) { this(v, delta, new float[]{0, 0, 0, 0, 0, 0}); } public Cube(Volume v, float delta, float[] trim) { this(); this.mTrim = trim; float minx = delta + trim[0] * (v.mDimx - delta); float miny = delta + trim[1] * (v.mDimy - delta); float minz = delta + trim[2] * (v.mDimz - delta); float maxx = v.mDimx - delta - trim[3] * (v.mDimx - delta); float maxy = v.mDimy - delta - trim[4] * (v.mDimy - delta); float maxz = v.mDimz - delta - trim[5] * (v.mDimz - delta); mVert = new float[]{ minx, miny, minz, maxx, miny, minz, maxx, maxy, minz, minx, maxy, minz, minx, miny, maxz, maxx, miny, maxz, maxx, maxy, maxz, minx, maxy, maxz, }; } public void clone(Cube src) { System.arraycopy(src.mTrim, 0, mTrim, 0, mTrim.length); mVert = Arrays.copyOf(src.mVert, src.mVert.length); mIndex = Arrays.copyOf(src.mIndex, src.mIndex.length); } public float[] getTrim() { return mTrim; } @Override public String toString() { return "CUBE[" + fs(mVert, 0, 3) + "][" + fs(mVert, 18, 3) + "]"; } private static String fs(float[] f, int off, int n) { DecimalFormat df = new DecimalFormat("##0.000"); String ret = ""; for (int i = off; i < off + n; i++) { String s = " " + df.format(f[i]); if (i != off) { ret += ","; } ret += s.substring(s.length() - 8); } return ret; } public Cube() { mVert = new float[]{ -1.f, -1.f, -1.f, 1.f, -1.f, -1.f, 1.f, 1.f, -1.f, -1.f, 1.f, -1.f, -1.f, -1.f, 1.f, 1.f, -1.f, 1.f, 1.f, 1.f, 1.f, -1.f, 1.f, 1.f, }; mIndex = new int[]{ 2, 1, 0, 0, 3, 2, 7, 4, 5, 5, 6, 7, 1, 2, 6, 6, 5, 1, 4, 7, 3, 3, 0, 4, 2, 3, 7, 7, 6, 2, 0, 1, 5, 5, 4, 0 }; for (int i = 0; i < mIndex.length; i++) { mIndex[i] *= 3; } } }