Skip to content

Commit

Permalink
use top-left heuristic for vectorio.Polygon
Browse files Browse the repository at this point in the history
this flips the bottom-right style to top-left which is at least
kind of normal.  A 2x2 square at (0,0) would be defined like
(0,0), (3,0), (3,3), (0,3)
Which seems kind of surprising but at least less bonkers than
that square being defined at (1,1), which is the current behavior.
  • Loading branch information
kvc0 committed Jul 29, 2020
1 parent a6e0486 commit 4c2d0c3
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions shared-module/vectorio/Polygon.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,13 +143,13 @@ uint32_t common_hal_vectorio_polygon_get_pixel(void *obj, int16_t x, int16_t y)
int y2 = self->points_list[i % self->len];
VECTORIO_POLYGON_DEBUG(" (%3d, %3d)}\n", x2, y2);
if ( y1 <= y ) {
if ( y2 > y && line_side(x1, y1, x2, y2, x, y) > 0 ) {
// Wind up, point is to the right of the edge vector
if ( y2 > y && line_side(x1, y1, x2, y2, x, y) < 0 ) {
// Wind up, point is to the left of the edge vector
++winding_number;
VECTORIO_POLYGON_DEBUG(" wind:%2d winding_number:%2d\n", 1, winding_number);
}
} else if ( y2 <= y && line_side(x1, y1, x2, y2, x, y) < 0 ) {
// Wind down, point is to the left of the edge vector
} else if ( y2 <= y && line_side(x1, y1, x2, y2, x, y) > 0 ) {
// Wind down, point is to the right of the edge vector
--winding_number;
VECTORIO_POLYGON_DEBUG(" wind:%2d winding_number:%2d\n", -1, winding_number);
}
Expand Down

0 comments on commit 4c2d0c3

Please sign in to comment.