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 Hoford 175b539461dcc159bd89297443780d635ccc5e3564John Hofordpackage com.example.android.rs.vr.engine; 185b539461dcc159bd89297443780d635ccc5e3564John Hoford 195b539461dcc159bd89297443780d635ccc5e3564John Hoford/** 205b539461dcc159bd89297443780d635ccc5e3564John Hoford * Some minimal utilities for Vector math 215b539461dcc159bd89297443780d635ccc5e3564John Hoford */ 225b539461dcc159bd89297443780d635ccc5e3564John Hofordpublic class VectorUtil { 235b539461dcc159bd89297443780d635ccc5e3564John Hoford public static void sub(double[] a, double[] b, double[] out) { 245b539461dcc159bd89297443780d635ccc5e3564John Hoford out[0] = a[0] - b[0]; 255b539461dcc159bd89297443780d635ccc5e3564John Hoford out[1] = a[1] - b[1]; 265b539461dcc159bd89297443780d635ccc5e3564John Hoford out[2] = a[2] - b[2]; 275b539461dcc159bd89297443780d635ccc5e3564John Hoford } 285b539461dcc159bd89297443780d635ccc5e3564John Hoford 295b539461dcc159bd89297443780d635ccc5e3564John Hoford public static void mult(double[] a, double b, double[] out) { 305b539461dcc159bd89297443780d635ccc5e3564John Hoford out[0] = a[0] * b; 315b539461dcc159bd89297443780d635ccc5e3564John Hoford out[1] = a[1] * b; 325b539461dcc159bd89297443780d635ccc5e3564John Hoford out[2] = a[2] * b; 335b539461dcc159bd89297443780d635ccc5e3564John Hoford } 345b539461dcc159bd89297443780d635ccc5e3564John Hoford 355b539461dcc159bd89297443780d635ccc5e3564John Hoford public static double dot(double[] a, double[] b) { 365b539461dcc159bd89297443780d635ccc5e3564John Hoford return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; 375b539461dcc159bd89297443780d635ccc5e3564John Hoford } 385b539461dcc159bd89297443780d635ccc5e3564John Hoford 395b539461dcc159bd89297443780d635ccc5e3564John Hoford public static double norm(double[] a) { 405b539461dcc159bd89297443780d635ccc5e3564John Hoford return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]); 415b539461dcc159bd89297443780d635ccc5e3564John Hoford } 425b539461dcc159bd89297443780d635ccc5e3564John Hoford 435b539461dcc159bd89297443780d635ccc5e3564John Hoford public static void cross(double[] a, double[] b, double[] out) { 445b539461dcc159bd89297443780d635ccc5e3564John Hoford double out0 = a[1] * b[2] - b[1] * a[2]; 455b539461dcc159bd89297443780d635ccc5e3564John Hoford double out1 = a[2] * b[0] - b[2] * a[0]; 465b539461dcc159bd89297443780d635ccc5e3564John Hoford double out2 = a[0] * b[1] - b[0] * a[1]; 475b539461dcc159bd89297443780d635ccc5e3564John Hoford out[0] = out0; 485b539461dcc159bd89297443780d635ccc5e3564John Hoford out[1] = out1; 495b539461dcc159bd89297443780d635ccc5e3564John Hoford out[2] = out2; 505b539461dcc159bd89297443780d635ccc5e3564John Hoford } 515b539461dcc159bd89297443780d635ccc5e3564John Hoford 525b539461dcc159bd89297443780d635ccc5e3564John Hoford public static void normalize(double[] a) { 535b539461dcc159bd89297443780d635ccc5e3564John Hoford double norm = norm(a); 545b539461dcc159bd89297443780d635ccc5e3564John Hoford a[0] /= norm; 555b539461dcc159bd89297443780d635ccc5e3564John Hoford a[1] /= norm; 565b539461dcc159bd89297443780d635ccc5e3564John Hoford a[2] /= norm; 575b539461dcc159bd89297443780d635ccc5e3564John Hoford } 585b539461dcc159bd89297443780d635ccc5e3564John Hoford 595b539461dcc159bd89297443780d635ccc5e3564John Hoford public static void add(double[] a, double[] b, 605b539461dcc159bd89297443780d635ccc5e3564John Hoford double[] out) { 615b539461dcc159bd89297443780d635ccc5e3564John Hoford out[0] = a[0] + b[0]; 625b539461dcc159bd89297443780d635ccc5e3564John Hoford out[1] = a[1] + b[1]; 635b539461dcc159bd89297443780d635ccc5e3564John Hoford out[2] = a[2] + b[2]; 645b539461dcc159bd89297443780d635ccc5e3564John Hoford } 655b539461dcc159bd89297443780d635ccc5e3564John Hoford 665b539461dcc159bd89297443780d635ccc5e3564John Hoford} 67