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