@@ -222,9 +222,9 @@ def render_sprite_mesh(
222
222
223
223
def copy_triangle (
224
224
src_img : Image .Image ,
225
- src_tri : Tuple [float , float ],
225
+ src_tri : Tuple [Tuple [ float , float ], Tuple [ float , float ], Tuple [ float , float ] ],
226
226
dst_img : Image .Image ,
227
- dst_tri : Tuple [float , float ],
227
+ dst_tri : Tuple [Tuple [ float , float ], Tuple [ float , float ], Tuple [ float , float ] ],
228
228
) -> None :
229
229
src_off = (
230
230
(src_tri [1 ][0 ] - src_tri [0 ][0 ], src_tri [1 ][1 ] - src_tri [0 ][1 ]),
@@ -240,7 +240,15 @@ def copy_triangle(
240
240
# no transform necessary, just copy the triangle
241
241
242
242
# make rectangle that contains the triangle
243
- upper_left , _ , lower_right = sorted (src_tri )
243
+ # upper_left, _, lower_right = sorted(src_tri)
244
+ upper_left = (
245
+ min (src_tri [0 ][0 ], src_tri [1 ][0 ], src_tri [2 ][0 ]),
246
+ min (src_tri [0 ][1 ], src_tri [1 ][1 ], src_tri [2 ][1 ]),
247
+ )
248
+ lower_right = (
249
+ max (src_tri [0 ][0 ], src_tri [1 ][0 ], src_tri [2 ][0 ]),
250
+ max (src_tri [0 ][1 ], src_tri [1 ][1 ], src_tri [2 ][1 ]),
251
+ )
244
252
src_part = src_img .crop ((* upper_left , * lower_right ))
245
253
246
254
# create mask for triangle
@@ -250,7 +258,11 @@ def copy_triangle(
250
258
maskdraw .polygon (mask_box , fill = 255 )
251
259
252
260
# paste triangle into destination image
253
- dst_img .paste (src_part , min (dst_tri ), mask = mask )
261
+ dst = (
262
+ int (min (dst_tri [0 ][0 ], dst_tri [1 ][0 ], dst_tri [2 ][0 ])),
263
+ int (min (dst_tri [0 ][1 ], dst_tri [1 ][1 ], dst_tri [2 ][1 ])),
264
+ )
265
+ dst_img .paste (src_part , dst , mask = mask )
254
266
else :
255
267
# transform is necessary, use affine transformation
256
268
# https://stackoverflow.com/a/6959111
0 commit comments