125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams/* 225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * Copyright (C) 2009 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 1925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 209c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 21c11e25c4e653124def1fb18e203b894f42106cbeTim Murray * Class for exposing the native RenderScript byte3 type back to the Android system. 2225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * 2325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams **/ 24a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Samspublic class Byte3 { 256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public byte x; 266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public byte y; 276a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public byte z; 286a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 29a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public Byte3() { 3025430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 3125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 326cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams public Byte3(byte initX, byte initY, byte initZ) { 336cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams x = initX; 346cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams y = initY; 356cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams z = initZ; 366cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams } 376cc888e77e17ac522f75bf61403307de8ace2ef3Jason Sams 386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide */ 396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public Byte3(Byte3 source) { 406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x = source.x; 416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y = source.y; 426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z = source.z; 436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector add 476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void add(Byte3 a) { 516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x += a.x; 526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y += a.y; 536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z += a.z; 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 Byte3 add(Byte3 a, Byte3 b) { 646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 656a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x + b.x); 666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y + b.y); 676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z + b.z); 686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector add 746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param value 766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void add(byte value) { 786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye x += value; 796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye y += value; 806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye z += value; 816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector add 856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 866a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 876a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 886a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 896a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 906a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static Byte3 add(Byte3 a, byte b) { 916a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 926a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x + b); 936a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y + b); 946a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z + b); 956a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 966a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 976a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 986a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 996a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1006a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector subtraction 1016a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1026a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 1036a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1046a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void sub(Byte3 a) { 1056a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x -= a.x; 1066a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y -= a.y; 1076a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z -= a.z; 1086a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 1096a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1106a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1116a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector subtraction 1126a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1136a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 1146a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 1156a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 1166a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1176a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static Byte3 sub(Byte3 a, Byte3 b) { 1186a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 1196a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x - b.x); 1206a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y - b.y); 1216a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z - b.z); 1226a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1236a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 1246a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 1256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1276a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector subtraction 1286a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1296a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param value 1306a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1316a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void sub(byte value) { 1326a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye x -= value; 1336a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye y -= value; 1346a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye z -= value; 1356a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 1366a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1376a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector subtraction 1396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 1416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 1426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 1436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static Byte3 sub(Byte3 a, byte b) { 1456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 1466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x - b); 1476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y - b); 1486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z - b); 1496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 1516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 1526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1546a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector multiplication 1556a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1566a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 1576a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1586a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void mul(Byte3 a) { 1596a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x *= a.x; 1606a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y *= a.y; 1616a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z *= a.z; 1626a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 1636a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1656a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector multiplication 1666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 1686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 1696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 1706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static Byte3 mul(Byte3 a, Byte3 b) { 1726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 1736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x * b.x); 1746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y * b.y); 1756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z * b.z); 1766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 1786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 1796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector multiplication 1826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param value 1846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void mul(byte value) { 1866a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye x *= value; 1876a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye y *= value; 1886a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye z *= value; 1896a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 1906a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 1916a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 1926a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector multiplication 1936a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 1946a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 1956a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 1966a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 1976a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 1986a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static Byte3 mul(Byte3 a, byte b) { 1996a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 2006a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x * b); 2016a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y * b); 2026a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z * b); 2036a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2046a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 2056a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2066a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2076a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2086a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector division 2096a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 2106a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 2116a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2126a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void div(Byte3 a) { 2136a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x /= a.x; 2146a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y /= a.y; 2156a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z /= a.z; 2166a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2176a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2186a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2196a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector division 2206a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 2216a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 2226a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 2236a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 2246a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static Byte3 div(Byte3 a, Byte3 b) { 2266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 2276a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x / b.x); 2286a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y / b.y); 2296a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z / b.z); 2306a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2316a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 2326a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2336a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2346a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2356a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector division 2366a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 2376a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param value 2386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void div(byte value) { 2406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye x /= value; 2416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye y /= value; 2426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye z /= value; 2436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector division 2476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 2486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 2496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 2506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 2516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static Byte3 div(Byte3 a, byte b) { 2536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye Byte3 result = new Byte3(); 2546a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.x = (byte)(a.x / b); 2556a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.y = (byte)(a.y / b); 2566a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye result.z = (byte)(a.z / b); 2576a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2586a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return result; 2596a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2606a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2616a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2626a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * get vector length 2636a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 2646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 2656a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public byte length() { 2676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return 3; 2686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * set vector negate 2726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void negate() { 2746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x = (byte)(-x); 2756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y = (byte)(-y); 2766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z = (byte)(-z); 2776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector dot Product 2816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 2826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 2836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 2846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public byte dotProduct(Byte3 a) { 2866a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return (byte)((byte)((byte)(x * a.x) + (byte)(y * a.y)) + (byte)(z * a.z)); 2876a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2886a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 2896a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 2906a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector dot Product 2916a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 2926a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 2936a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 2946a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 2956a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 2966a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public static byte dotProduct(Byte3 a, Byte3 b) { 2976a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return (byte)((byte)((byte)(b.x * a.x) + (byte)(b.y * a.y)) + (byte)(b.z * a.z)); 2986a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 2996a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 3006a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 3016a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * Vector add Multiple 3026a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 3036a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 3046a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param factor 3056a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 3066a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void addMultiple(Byte3 a, byte factor) { 3076a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye x += a.x * factor; 3086a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye y += a.y * factor; 3096a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye z += a.z * factor; 3106a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3116a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 3126a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 3136a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * set vector value by Byte3 3146a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 3156a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 3166a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 3176a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void set(Byte3 a) { 3186a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x = a.x; 3196a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y = a.y; 3206a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z = a.z; 3216a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3226a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 3236a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 3246a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * set the vector field value by Char 3256a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 3266a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param a 3276a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param b 3286a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param c 3296a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 3306a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void setValues(byte a, byte b, byte c) { 3316a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.x = a; 3326a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.y = b; 3336a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye this.z = c; 3346a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3356a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 3366a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 3376a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * return the element sum of vector 3386a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 3396a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 3406a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 3416a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public byte elementSum() { 3426a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return (byte)(x + y + z); 3436a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3446a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 3456a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 3466a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * get the vector field value by index 3476a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 3486a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param i 3496a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @return 3506a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 3516a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public byte get(int i) { 3526a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye switch (i) { 3536a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 0: 3546a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return x; 3556a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 1: 3566a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return y; 3576a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 2: 3586a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return z; 3596a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye default: 3606a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye throw new IndexOutOfBoundsException("Index: i"); 3616a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3626a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3636a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 3646a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 3656a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * set the vector field value by index 3666a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 3676a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param i 3686a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param value 3696a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 3706a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void setAt(int i, byte value) { 3716a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye switch (i) { 3726a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 0: 3736a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye x = value; 3746a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return; 3756a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 1: 3766a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye y = value; 3776a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return; 3786a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 2: 3796a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye z = value; 3806a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return; 3816a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye default: 3826a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye throw new IndexOutOfBoundsException("Index: i"); 3836a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3846a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 3856a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 3866a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 3876a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * add the vector field value by index 3886a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 3896a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param i 3906a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param value 3916a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 3926a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void addAt(int i, byte value) { 3936a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye switch (i) { 3946a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 0: 3956a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye x += value; 3966a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return; 3976a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 1: 3986a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye y += value; 3996a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return; 4006a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye case 2: 4016a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye z += value; 4026a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye return; 4036a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye default: 4046a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye throw new IndexOutOfBoundsException("Index: i"); 4056a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 4066a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 4076a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye 4086a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye /** @hide 4096a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * copy the vector to Char array 4106a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * 4116a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param data 4126a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye * @param offset 4136a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye */ 4146a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye public void copyTo(byte[] data, int offset) { 4156a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye data[offset] = x; 4166a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye data[offset + 1] = y; 4176a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye data[offset + 2] = z; 4186a5875cf96a6eebf4ef2e176176868ecbf17122fMatthieu Delahaye } 41925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams} 42025430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 42125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 42225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 42325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 424