From 7a150c884d247bfa669dc147677256994baf734f Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 11 Mar 2009 13:25:18 +0100 Subject: [PATCH] Vec2D: Added a method that can be used to determine if the vector is a unit vector. --- src/net/habraun/sd/math/Vec2D.scala | 8 ++++++++ test/net/habraun/sd/math/Vec2DTest.scala | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/net/habraun/sd/math/Vec2D.scala b/src/net/habraun/sd/math/Vec2D.scala index 307874c..53ac41a 100644 --- a/src/net/habraun/sd/math/Vec2D.scala +++ b/src/net/habraun/sd/math/Vec2D.scala @@ -118,4 +118,12 @@ case class Vec2D(x: Double, y: Double) { */ def project(vec: Vec2D) = vec * ((this * vec) / (vec * vec)) + + + + /** + * Returns true if the vector is a unit vector, false otherwise. + */ + + def unit = squaredLength < 1.05 && squaredLength > 0.95 } diff --git a/test/net/habraun/sd/math/Vec2DTest.scala b/test/net/habraun/sd/math/Vec2DTest.scala index 6f2c658..9a75144 100644 --- a/test/net/habraun/sd/math/Vec2DTest.scala +++ b/test/net/habraun/sd/math/Vec2DTest.scala @@ -116,4 +116,19 @@ class Vec2DTest { val vec2 = Vec2D(1, 0) assertEquals(Vec2D(5, 0), vec1.project(vec2)) } + + + + @Test + def isUnit { + val unit = Vec2D(1, 0) + val nonUnit = Vec2D(2, 0) + val unitWithTolerance1 = Vec2D(0.98, 0) + val unitWithTolerance2 = Vec2D(1.02, 0) + + assertTrue(unit.unit) + assertFalse(nonUnit.unit) + assertTrue(unitWithTolerance1.unit) + assertTrue(unitWithTolerance2.unit) + } } -- 2.11.4.GIT