ฉันคิดว่ารูปวาดของคุณเป็นสิ่งที่ทำให้เข้าใจผิดเล็กน้อยเพราะคุณเลือกที่จะวาดสโตรกจากจุดที่วงกลมสัมผัสกับทิศทางการเคลื่อนที่ของคุณ ฉันเห็นได้ว่าการชนกับขอบกริดของคุณเกิดขึ้นเมื่อจุดสูงสุดและด้านซ้ายของวงกลมสัมผัสกับขอบ
ให้Cเป็นศูนย์กลางของคุณและrรัศมีดังนั้นP' = C + ( R , 0) และP" = C + (0, R)
ถ้าDคือเวกเตอร์บอกทิศทางของคุณ (เวอร์ชั่นล่าสุด) คุณมีสองบรรทัด:
R '= D · t + P' ,
R "= D · t + P"
คุณต้องหาจุดตัดของเส้นเหล่านั้นด้วยเส้นของสมการง่ายๆ
y = iและ y = i ที่เป็นขอบของกริดของคุณ!
การแก้ปัญหาเป็นเรื่องง่ายเพราะคุณมีเพียงแค่พิจารณา x หรือ Component Y ของ R และ R". คุณจะได้พบกับเสื้อคุ้มค่าสำหรับแต่ละ insersection และจุดสำหรับ thoose เสื้อ s เพียงแค่การจัดเรียงจุดเหล่านั้นโดยTและคุณ เสร็จแล้ว.
ฉันเชื่อว่าคุณสามารถพูดได้อย่างง่ายดายว่าเซลล์ใดจะถูกตีถ้าคุณรู้จุดแยก
ใช้งานได้ถ้าr <1 (ความกว้างและความสูงของเซลล์)
มันใช้งานได้กับกรณีอื่น ๆ เพียงแค่ทำการพิจารณาบางอย่างเกี่ยวกับP 'และP "เราเลือก TOP และ LEFT เนื่องจากทิศทางทิศทางด้านล่างและด้านขวาควรได้รับการพิจารณาในทิศทางตรงกันข้ามคุณเข้าใจว่าทำไม
ตอนนี้ดูที่ภาพนี้:
วงกลมมีขนาดใหญ่กว่านั้นเป็นเซลล์เดียวและเราคิดว่ามันไปในทิศทางเดียวกันกับรูปวาดของคุณ P1 คือจุดแรกที่จะสัมผัส P2 เป็นวินาทีที่สอง P3 ไร้ประโยชน์เพราะอยู่ในครึ่งล่าง สิ่งที่คุณต้องทำคือการโยนรังสีจาก P1 และ P2 ตามที่เราเห็นมาก่อนและทำแบบเดียวกันกับเส้นแนวตั้ง
โดยทั่วไปคุณจะมีจุดเริ่มต้นอื่น ๆ พร้อมกับด้านบนและด้านซ้ายจากที่ยิงรังสีของคุณวงกลมของคุณมีขนาดใหญ่ขึ้นรังสีที่จะหล่อมากขึ้น
ความซื่อสัตย์บางอย่างคุณสามารถหลีกเลี่ยงการยิงรังสีทั้งหมดที่ทำการพิจารณาทางเรขาคณิตบางอย่าง แต่ที่สามารถทำให้สิ่งที่ยากต่อการเข้าใจ