From e50baf1bcea86bd969b7d87e9dd643607ef7f161 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sat, 5 May 2012 17:39:11 +0200 Subject: digital/avr/modules/math/geometry: intersection with a polygon --- digital/avr/modules/math/geometry/intersection.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'digital/avr/modules/math/geometry/intersection.c') diff --git a/digital/avr/modules/math/geometry/intersection.c b/digital/avr/modules/math/geometry/intersection.c index 8438813b..1f8a9278 100644 --- a/digital/avr/modules/math/geometry/intersection.c +++ b/digital/avr/modules/math/geometry/intersection.c @@ -85,3 +85,20 @@ intersection_segment_segment (const vect_t *a, const vect_t *b, } } } + +uint8_t +intersection_segment_poly (const vect_t *a, const vect_t *b, + const vect_t *poly, uint8_t poly_size) +{ + uint8_t i; + assert (poly_size > 0); + for (i = 0; i < poly_size - 1; i++) + { + if (intersection_segment_segment (a, b, &poly[i], &poly[i + 1])) + return 1; + } + if (intersection_segment_segment (a, b, &poly[i], &poly[0])) + return 1; + return 0; +} + -- cgit v1.2.3