diff options
author | Robert Adams | 2013-01-17 14:44:54 -0800 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2013-01-25 23:51:50 +0000 |
commit | 8ecf6ed08e95445e80735859647764da7c242fa2 (patch) | |
tree | a758d1be8b12bf8d36cad29e3fad8bd341c4c462 | |
parent | Changed a couple of debug messages at the request of osgrid. (diff) | |
download | opensim-SC_OLD-8ecf6ed08e95445e80735859647764da7c242fa2.zip opensim-SC_OLD-8ecf6ed08e95445e80735859647764da7c242fa2.tar.gz opensim-SC_OLD-8ecf6ed08e95445e80735859647764da7c242fa2.tar.bz2 opensim-SC_OLD-8ecf6ed08e95445e80735859647764da7c242fa2.tar.xz |
Add utility function to clamp a vector to a maximum magnitude.
-rw-r--r-- | OpenSim/Framework/Util.cs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 4fd8a2d..7204279 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -299,6 +299,18 @@ namespace OpenSim.Framework | |||
299 | x; | 299 | x; |
300 | } | 300 | } |
301 | 301 | ||
302 | // Clamp the maximum magnitude of a vector | ||
303 | public static Vector3 ClampV(Vector3 x, float max) | ||
304 | { | ||
305 | Vector3 ret = x; | ||
306 | float lenSq = x.LengthSquared(); | ||
307 | if (lenSq > (max * max)) | ||
308 | { | ||
309 | x = x / x.Length() * max; | ||
310 | } | ||
311 | return x; | ||
312 | } | ||
313 | |||
302 | // Inclusive, within range test (true if equal to the endpoints) | 314 | // Inclusive, within range test (true if equal to the endpoints) |
303 | public static bool InRange<T>(T x, T min, T max) | 315 | public static bool InRange<T>(T x, T min, T max) |
304 | where T : IComparable<T> | 316 | where T : IComparable<T> |