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