From 884bc9b0f56ee2ce4e6dd7b592b908791d09edfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Wed, 14 Jul 2010 23:51:04 +0200 Subject: [PATCH] libgimpmath: add a function that compute the normal vector to an other --- libgimpmath/gimpvector.c | 42 ++++++++++++++++++++++++++++++++++++++++ libgimpmath/gimpvector.h | 2 ++ 2 files changed, 44 insertions(+) diff --git a/libgimpmath/gimpvector.c b/libgimpmath/gimpvector.c index c963ea7a11..bb5318237e 100644 --- a/libgimpmath/gimpvector.c +++ b/libgimpmath/gimpvector.c @@ -451,6 +451,48 @@ gimp_vector2_rotate_val (GimpVector2 vector, return result; } +/** + * gimp_vector2_normal: + * @vector: a pointer to a #GimpVector2. + * + * Compute a normalized perpendicular vector to @vector + * + * Returns: a #GimpVector2 perpendicular to @vector, with a length of 1.0. + **/ +GimpVector2 +gimp_vector2_normal (GimpVector2 *vector) +{ + GimpVector2 result; + + result.x = vector->y; + result.y = - vector->x; + + gimp_vector2_normalize (vector); + + return result; +} + +/** + * gimp_vector2_normal_val: + * @vector: a #GimpVector2. + * + * This function is identical to gimp_vector2_normal() but the vector + * is passed by value rather than by reference. + * + * Returns: a #GimpVector2 perpendicular to @vector, with a length of 1.0. + **/ +GimpVector2 +gimp_vector2_normal_val (GimpVector2 vector) +{ + GimpVector2 result; + + result.x = vector.y; + result.y = - vector.x; + + gimp_vector2_normalize (&result); + + return result; +} /**************************************/ /* Three dimensional vector functions */ /**************************************/ diff --git a/libgimpmath/gimpvector.h b/libgimpmath/gimpvector.h index 4ec383b7be..f6f38c1499 100644 --- a/libgimpmath/gimpvector.h +++ b/libgimpmath/gimpvector.h @@ -85,6 +85,8 @@ void gimp_vector2_rotate (GimpVector2 *vector, gdouble alpha); GimpVector2 gimp_vector2_rotate_val (GimpVector2 vector, gdouble alpha); +GimpVector2 gimp_vector2_normal (GimpVector2 *vector); +GimpVector2 gimp_vector2_normal_val (GimpVector2 vector); /* Three dimensional vector functions */ /* ================================== */