/* | |
* 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; | |
/** | |
* Some minimal utilities for Vector math | |
*/ | |
public class VectorUtil { | |
public static void sub(double[] a, double[] b, double[] out) { | |
out[0] = a[0] - b[0]; | |
out[1] = a[1] - b[1]; | |
out[2] = a[2] - b[2]; | |
} | |
public static void mult(double[] a, double b, double[] out) { | |
out[0] = a[0] * b; | |
out[1] = a[1] * b; | |
out[2] = a[2] * b; | |
} | |
public static double dot(double[] a, double[] b) { | |
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; | |
} | |
public static double norm(double[] a) { | |
return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]); | |
} | |
public static void cross(double[] a, double[] b, double[] out) { | |
double out0 = a[1] * b[2] - b[1] * a[2]; | |
double out1 = a[2] * b[0] - b[2] * a[0]; | |
double out2 = a[0] * b[1] - b[0] * a[1]; | |
out[0] = out0; | |
out[1] = out1; | |
out[2] = out2; | |
} | |
public static void normalize(double[] a) { | |
double norm = norm(a); | |
a[0] /= norm; | |
a[1] /= norm; | |
a[2] /= norm; | |
} | |
public static void add(double[] a, double[] b, | |
double[] out) { | |
out[0] = a[0] + b[0]; | |
out[1] = a[1] + b[1]; | |
out[2] = a[2] + b[2]; | |
} | |
} |