अनंत तक एक रेखा खींचें और गिनें कि आप कितनी बार आकृति (यहां तक कि विषम) को पार करते हैं, न कि उस खंड को गिनते हुए जहां प्राणी झूठ बोलता है। फिर जांचें कि क्या प्राणी उस रेखा के बाएं या दाएं जा रहा है।
इस उदाहरण में, हम दो बार आकृति को पार करते हैं (इसलिए भी) और हम बाईं ओर जाते हैं। परिणाम इस तालिका से तत्काल है:
# Crosses | even | odd
Direction | |
-------------+-------+------
left | CCW | CW
right | CW | CCW
छद्मकोश में:
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