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