OSDN Git Service

Added Vector.limit(float maxLength) methods
authorPrzemek Muller <thotep@gmail.com>
Wed, 20 Feb 2013 08:52:25 +0000 (09:52 +0100)
committerPrzemek Muller <thotep@gmail.com>
Wed, 20 Feb 2013 08:52:25 +0000 (09:52 +0100)
gdx/src/com/badlogic/gdx/math/Vector.java
gdx/src/com/badlogic/gdx/math/Vector2.java
gdx/src/com/badlogic/gdx/math/Vector3.java

index f03add8..86dbcf5 100644 (file)
@@ -28,6 +28,10 @@ public interface Vector<T extends Vector> {
 
        /** @return The squared euclidian length */
        float len2 ();
+       
+       /** Limits this vector's length to given value
+        * @return This vector for chaining */
+       T limit (float limit);
 
        /** Sets this vector from the given vector
         * @param v The vector
index 8cfada9..d655369 100644 (file)
@@ -205,6 +205,17 @@ public class Vector2 implements Serializable, Vector<Vector2> {
                final float y_d = y - this.y;\r
                return x_d * x_d + y_d * y_d;\r
        }\r
+       \r
+       /** Limits this vector's length to given value\r
+        * @param limit Max length\r
+        * @return This vector for chaining */\r
+       public Vector2 limit (float limit) {\r
+               if (len2() > limit * limit) {\r
+                       nor();\r
+                       mul(limit);\r
+               }\r
+               return this;\r
+       }\r
 \r
        public String toString () {\r
                return "[" + x + ":" + y + "]";\r
index 93ed80e..15c6c93 100644 (file)
@@ -418,6 +418,17 @@ public class Vector3 implements Serializable, Vector<Vector3> {
 \r
                return a + b + c;\r
        }\r
+       \r
+       /** Limits this vector's length to given value\r
+        * @param limit Max length\r
+        * @return This vector for chaining */\r
+       public Vector3 limit (float limit) {\r
+               if (len2() > limit * limit) {\r
+                       nor();\r
+                       mul(limit);\r
+               }\r
+               return this;\r
+       }\r
 \r
        /** Returns the squared distance between this point and the given point\r
         * \r