Sonsuza kadar bir çizgi çizin ve yaratığın bulunduğu segmenti saymadan şekli kaç kez (çift veya tek) geçtiğinizi sayın. Ardından, yaratığın o çizginin sağına mı yoksa sağına mı gittiğini kontrol edin.
Bu örnekte, şekli iki kez (hatta çift) geçiyoruz ve sola gidiyoruz. Sonuç şu tablodan hemen çıkar:
# Crosses | even | odd
Direction | |
-------------+-------+------
left | CCW | CW
right | CW | CCW
Sözde kodda:
x, y = position of creature
vx, vy = direction of creature movement
crossings = 0
for each x1, y1, x2, y2 in shape segments:
if (x1 < x and x <= x2) or (x2 < x and x <= x1):
if y - y1 > (x - x1) * (y2 - y1) / (x2 - x1):
++crossings
if (crossings & 1) == (vx < 0):
return CW
else
return CCW