ลากเส้นไปที่ระยะอนันต์และนับจำนวนครั้งที่คุณข้ามรูปร่าง (หรือคี่) ไม่นับส่วนที่สัตว์นั้นอยู่ จากนั้นตรวจสอบว่าสิ่งมีชีวิตกำลังจะไปทางซ้ายหรือทางขวาของบรรทัดนั้น
ในตัวอย่างนี้เราข้ามรูปร่างสองครั้ง (เท่ากัน) และเราไปทางซ้าย ผลลัพธ์จะมาจากตารางนี้ทันที:
# Crosses | even | odd
Direction | |
-------------+-------+------
left | CCW | CW
right | CW | CCW
ใน pseudocode:
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