use top-left heuristic for vectorio.Polygon
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.
This commit is contained in:
parent
a6e048686f
commit
4c2d0c3dc5
@ -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];
|
int y2 = self->points_list[i % self->len];
|
||||||
VECTORIO_POLYGON_DEBUG(" (%3d, %3d)}\n", x2, y2);
|
VECTORIO_POLYGON_DEBUG(" (%3d, %3d)}\n", x2, y2);
|
||||||
if ( y1 <= y ) {
|
if ( y1 <= y ) {
|
||||||
if ( y2 > y && line_side(x1, y1, x2, y2, x, y) > 0 ) {
|
if ( y2 > y && line_side(x1, y1, x2, y2, x, y) < 0 ) {
|
||||||
// Wind up, point is to the right of the edge vector
|
// Wind up, point is to the left of the edge vector
|
||||||
++winding_number;
|
++winding_number;
|
||||||
VECTORIO_POLYGON_DEBUG(" wind:%2d winding_number:%2d\n", 1, 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 ) {
|
} else if ( y2 <= y && line_side(x1, y1, x2, y2, x, y) > 0 ) {
|
||||||
// Wind down, point is to the left of the edge vector
|
// Wind down, point is to the right of the edge vector
|
||||||
--winding_number;
|
--winding_number;
|
||||||
VECTORIO_POLYGON_DEBUG(" wind:%2d winding_number:%2d\n", -1, winding_number);
|
VECTORIO_POLYGON_DEBUG(" wind:%2d winding_number:%2d\n", -1, winding_number);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user