16cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams/*
26a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Copyright (C) 2013 The Android Open Source Project
36cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams *
46cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
56cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * you may not use this file except in compliance with the License.
66cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * You may obtain a copy of the License at
76cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams *
86cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
96cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams *
106cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * Unless required by applicable law or agreed to in writing, software
116cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
126cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * See the License for the specific language governing permissions and
146cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams * limitations under the License.
156cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams */
166cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
176cc888e77e17ac522f75bf61403307de8ace2ef3Jason Samspackage android.renderscript;
186cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
199c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/**
206a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector version of the basic double type.
216a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Provides two double fields packed.
226a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */
236cc888e77e17ac522f75bf61403307de8ace2ef3Jason Samspublic class Double2 {
246a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public double x;
256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public double y;
266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
276cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams    public Double2() {
286cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams    }
296cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
306a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide */
316a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public Double2(Double2 data) {
326a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.x = data.x;
336a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.y = data.y;
346cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams    }
356cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
366a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public Double2(double x, double y) {
376a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.x = x;
386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.y = y;
396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector add
436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 add(Double2 a, Double2 b) {
496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x + b.x;
516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y + b.y;
526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
546a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
556a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
566a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
576a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector add
586a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
596a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
606a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
616a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void add(Double2 value) {
626a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x += value.x;
636a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y += value.y;
646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
656a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector add
686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void add(double value) {
726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x += value;
736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y += value;
746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector add
786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 add(Double2 a, double b) {
846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x + b;
866a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y + b;
876a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
886a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
896a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
906a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
916a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
926a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector subtraction
936a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
946a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
956a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
966a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void sub(Double2 value) {
976a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x -= value.x;
986a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y -= value.y;
996a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1006a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1016a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1026a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector subtraction
1036a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1046a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
1056a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
1066a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
1076a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1086a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 sub(Double2 a, Double2 b) {
1096a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
1106a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x - b.x;
1116a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y - b.y;
1126a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1136a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
1146a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1156a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1166a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1176a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector subtraction
1186a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1196a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
1206a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1216a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void sub(double value) {
1226a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x -= value;
1236a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y -= value;
1246a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1276a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector subtraction
1286a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1296a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
1306a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
1316a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
1326a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1336a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 sub(Double2 a, double b) {
1346a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
1356a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x - b;
1366a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y - b;
1376a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
1396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector multiplication
1436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
1456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void mul(Double2 value) {
1476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x *= value.x;
1486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y *= value.y;
1496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector multiplication
1536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1546a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
1556a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
1566a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
1576a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1586a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 mul(Double2 a, Double2 b) {
1596a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
1606a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x * b.x;
1616a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y * b.y;
1626a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1636a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
1646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1656cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
1666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector multiplication
1686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
1706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void mul(double value) {
1726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x *= value;
1736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y *= value;
1746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector multiplication
1786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
1806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
1816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
1826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 mul(Double2 a, double b) {
1846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
1856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x * b;
1866a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y * b;
1876a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1886a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
1896a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
1906a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
1916a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
1926a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector division
1936a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
1946a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
1956a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
1966a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void div(Double2 value) {
1976a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x /= value.x;
1986a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y /= value.y;
1996a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2006a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2016a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2026a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector division
2036a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2046a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
2056a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
2066a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
2076a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2086a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 div(Double2 a, Double2 b) {
2096a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
2106a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x / b.x;
2116a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y / b.y;
2126a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2136a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
2146a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2156a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2166a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2176a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector division
2186a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2196a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
2206a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2216a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void div(double value) {
2226a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x /= value;
2236a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y /= value;
2246a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2276a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector division
2286a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2296a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
2306a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
2316a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
2326a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2336a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double2 div(Double2 a, double b) {
2346a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        Double2 res = new Double2();
2356a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.x = a.x / b;
2366a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        res.y = a.y / b;
2376a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return res;
2396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector dot Product
2436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
2456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
2466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public double dotProduct(Double2 a) {
2486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return (x * a.x) + (y * a.y);
2496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector dot Product
2536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2546a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
2556a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param b
2566a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
2576a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2586a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public static Double dotProduct(Double2 a, Double2 b) {
2596a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return (b.x * a.x) + (b.y * a.y);
2606a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2616cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
2626a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2636a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Vector add Multiple
2646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2656a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
2666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param factor
2676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void addMultiple(Double2 a, double factor) {
2696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x += a.x * factor;
2706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y += a.y * factor;
2716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Set vector value by double2
2756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param a
2776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void set(Double2 a) {
2796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.x = a.x;
2806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.y = a.y;
2816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Set vector negate
2856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2866a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void negate() {
2876a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        x = -x;
2886a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        y = -y;
2896a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2906a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
2916a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
2926a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Get vector length
2936a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
2946a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
2956a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
2966a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public int length() {
2976a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return 2;
2986a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
2996a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
3006a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
3016a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Return the element sum of vector
3026a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
3036a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
3046a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
3056a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public double elementSum() {
3066a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        return x + y;
3076a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
3086cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
3096a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
3106a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Get the vector field value by index
3116a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
3126a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param i
3136a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @return
3146a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
3156a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public double get(int i) {
3166a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        switch (i) {
3176a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        case 0:
3186a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            return x;
3196a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        case 1:
3206a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            return y;
3216a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        default:
3226a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            throw new IndexOutOfBoundsException("Index: i");
3236a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        }
3246a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
3256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
3266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
3276a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Set the vector field value by index
3286a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
3296a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param i
3306a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
3316a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
3326a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void setAt(int i, double value) {
3336a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        switch (i) {
3346a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        case 0:
3356a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            x = value;
3366a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            return;
3376a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        case 1:
3386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            y = value;
3396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            return;
3406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        default:
3416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            throw new IndexOutOfBoundsException("Index: i");
3426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        }
3436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
3446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
3456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
3466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Add the vector field value by index
3476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
3486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param i
3496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param value
3506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
3516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void addAt(int i, double value) {
3526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        switch (i) {
3536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        case 0:
3546a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            x += value;
3556a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            return;
3566a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        case 1:
3576a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            y += value;
3586a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            return;
3596a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        default:
3606a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye            throw new IndexOutOfBoundsException("Index: i");
3616a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        }
3626a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
3636cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams
3646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
3656a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Set the vector field value
3666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
3676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param x
3686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param y
3696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
3706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void setValues(double x, double y) {
3716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.x = x;
3726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        this.y = y;
3736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
3746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye
3756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    /** @hide
3766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * Copy the vector to double array
3776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     *
3786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param data
3796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     * @param offset
3806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye     */
3816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    public void copyTo(double[] data, int offset) {
3826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        data[offset] = x;
3836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye        data[offset + 1] = y;
3846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye    }
3856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye}
386