Merge pull request #3221 from WarriorOfWire/vectorio_topleft

use top-left heuristic for vectorio.Polygon
This commit is contained in:
Jeff Epler 2020-07-29 11:19:02 -05:00 committed by GitHub
commit 5cb7e64cc8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);
}