/*
* Copyright 2015 Google Inc. All Rights Reserved.
*
* 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.projecttango.rajawali.renderables;
import android.graphics.Color;
import org.rajawali3d.materials.Material;
import org.rajawali3d.math.vector.Vector3;
import org.rajawali3d.primitives.Line3D;
import java.util.Arrays;
import java.util.Collections;
import java.util.Stack;
/**
* A primitive which represents a combination of Frustum and Axes.
*/
public class FrustumAxes extends Line3D {
private static final float FRUSTUM_WIDTH = 0.8f;
private static final float FRUSTUM_HEIGHT = 0.6f;
private static final float FRUSTUM_DEPTH = 0.5f;
public FrustumAxes(float thickness) {
super(makePoints(), thickness, makeColors());
Material material = new Material();
material.useVertexColors(true);
setMaterial(material);
}
private static Stack<Vector3> makePoints() {
Vector3 o = new Vector3(0, 0, 0);
Vector3 a = new Vector3(-FRUSTUM_WIDTH / 2f, FRUSTUM_HEIGHT / 2f, -FRUSTUM_DEPTH);
Vector3 b = new Vector3(FRUSTUM_WIDTH / 2f, FRUSTUM_HEIGHT / 2f, -FRUSTUM_DEPTH);
Vector3 c = new Vector3(FRUSTUM_WIDTH / 2f, -FRUSTUM_HEIGHT / 2f, -FRUSTUM_DEPTH);
Vector3 d = new Vector3(-FRUSTUM_WIDTH / 2f, -FRUSTUM_HEIGHT / 2f, -FRUSTUM_DEPTH);
Vector3 x = new Vector3(1, 0, 0);
Vector3 y = new Vector3(0, 1, 0);
Vector3 z = new Vector3(0, 0, 1);
Stack<Vector3> points = new Stack<Vector3>();
Collections.addAll(points, o, x, o, y, o, z, o, a, b, o, b, c, o, c, d, o, d, a);
return points;
}
private static int[] makeColors() {
int[] colors = new int[18];
Arrays.fill(colors, Color.BLACK);
colors[0] = Color.RED;
colors[1] = Color.RED;
colors[2] = Color.GREEN;
colors[3] = Color.GREEN;
colors[4] = Color.BLUE;
colors[5] = Color.BLUE;
return colors;
}
}