From 7c64109bce446b91f35e187f081f3244c5c92522 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Jan 2013 08:16:19 +0000 Subject: bmesh todo: uv stretch area draw mode wasn't calculating ngon area - added area_poly_v2(). --- source/blender/blenlib/intern/math_geom.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'source/blender/blenlib/intern') diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 5f1047d054e..fc1d0e99a30 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -149,6 +149,25 @@ float area_poly_v3(int nr, float verts[][3], const float normal[3]) return fabsf(0.5f * area / max); } +float area_poly_v2(int nr, float verts[][2]) +{ + int a; + float area; + float *co_curr, *co_prev; + + /* The Trapezium Area Rule */ + co_prev = verts[nr - 1]; + co_curr = verts[0]; + area = 0.0f; + for (a = 0; a < nr; a++) { + area += (co_curr[0] - co_prev[0]) * (co_curr[1] + co_prev[1]); + co_prev = verts[a]; + co_curr = verts[a + 1]; + } + + return fabsf(0.5f * area); +} + /********************************* Distance **********************************/ /* distance p to line v1-v2 -- cgit v1.2.3