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