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