Çiziminizin biraz yanıltıcı olduğunu düşünüyorum çünkü daire üzerindeki noktadan hareket yönünüze teğet vuruşlar seçmeyi tercih ediyorsunuz. Dairenizin ÜST ve SOL noktaları bir kenara değdiğinde ızgara kenarlarınızdaki çarpışmaların olduğunu görebiliyorum.
Let Cı daki merkezi olabilir ve r yarıçapı böylece P' = Cı- + ( R , 0) ve P" nin = C + (0, r).
Eğer D senin yön vektörü (versor) 'dir Eğer iki satır vardır:
R '= D · t + P' ,
R "= D · t + P"
Bu çizgilerin denklem çizgileri ile kesişimini bulmanız yeterlidir:
ızgaranızın kenarları olan y = i ve y = i !
Solüsyon Sen bulacaksınız. Basitçe x veya R y bileşeni' ve R" düşünmek zorundayız çünkü kolay t her insersection için s değeri ve thoose için puan t tarafından ler, sadece sıralama bu noktada t ve sizin yapılır.
Kesişim noktasını biliyorsanız hangi hücrenin vurulduğunu kolayca söyleyebileceğinizi düşünüyorum.
Bu r <1 ise (hücre genişliği ve yüksekliği) işe yarar .
Diğer durumlarda da sadece P ' ve P hakkında biraz düşünerek çalışıyor . " Yönü nedeniyle TOP ve SOL seçiyoruz, ALT ve SAĞ ters yönde düşünülmelidir, nedenini anlıyorsunuz.
Şimdi şu resme bakın:
Daire tek bir hücreden daha büyük ve çiziminizle aynı yöne gittiğini düşünüyoruz. P1 dokunacak ilk nokta, P2 ikinci, P3 işe yaramaz çünkü alt yarıda. Yapmanız gereken, daha önce gördüğümüz gibi P1 ve P2'den ışınlar dökmek ve dikey çizgiler için aynısını yapmaktır.
Genel olarak, ışınlarınızı ateşlediğiniz yerden TOP ve SOL olanlarla birlikte başka başlangıç noktalarınız olacak, daireniz ne kadar büyükse, o kadar fazla ışın dökülecektir.
Dürüst olmak gerekirse, bazı geometrik ışınlar yaparak tüm ışınları vurmaktan kaçınabilirsiniz, ancak bu şeyleri anlamakta zorlanabilir.