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