অনন্তের জন্য একটি লাইন আঁকুন এবং জীবটি যে অংশটি পড়েছেন সেটিকে গণনা না করে আপনি আকারটি (এমনকি বা বিজোড়) কতবার অতিক্রম করেছেন তা গণনা করুন। তারপরে প্রাণীটি এই লাইনের বামে বা ডানে যাচ্ছে কিনা তা পরীক্ষা করে দেখুন।
এই উদাহরণস্বরূপ, আমরা আকারটি দুইবার (তাই এমনকি) অতিক্রম করি এবং আমরা বাম দিকে যাই। ফলাফল এই টেবিল থেকে তাত্ক্ষণিক:
# 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