Tôi nghĩ rằng bản vẽ của bạn hơi sai lệch bởi vì bạn chọn vẽ các nét từ điểm trên đường tròn tiếp tuyến với hướng di chuyển của bạn. Tôi có thể thấy rằng các va chạm vào các cạnh lưới của bạn sẽ xảy ra khi các điểm TOP và TRÁI của vòng tròn của bạn chạm vào một cạnh.
Đặt C là tâm của bạn và r bán kính sao cho P ' = C + ( r , 0) và P " = C + (0, r).
Nếu D là vectơ chỉ đường của bạn (câu thơ), bạn có hai dòng:
R '= D · t + P' ,
R "= D · t + P"
Bạn đơn giản phải tìm giao điểm của các đường đó với các đường phương trình:
y = i và y = i đó là các cạnh của lưới của bạn!
Giải pháp rất dễ vì bạn chỉ cần xem xét thành phần x hoặc y của R 'và R ". Bạn sẽ tìm thấy giá trị t s cho mỗi phần chèn và các điểm cho thoose t s, chỉ cần sắp xếp các điểm đó theo t và bạn xong rồi
Tôi tin rằng bạn có thể dễ dàng nói ô nào bị tấn công nếu bạn biết điểm giao nhau.
Điều này hoạt động nếu r <1 (chiều rộng và chiều cao của ô).
Nó cũng hoạt động đối với các trường hợp khác chỉ đơn giản là thực hiện một số xem xét về P ' và P " . Chúng tôi chọn TOP và LEFT vì hướng, BOTTOM và RIGHT nên được xem xét cho hướng ngược lại, bạn hiểu tại sao.
Bây giờ hãy nhìn vào hình ảnh này:
Vòng tròn lớn hơn một ô duy nhất và chúng tôi cho rằng nó sẽ đi cùng hướng với bản vẽ của bạn. P1 là điểm đầu tiên sẽ chạm vào, P2 là điểm thứ hai, P3 là vô dụng vì nằm ở nửa dưới. Những gì bạn cần làm là truyền các tia từ P1 và P2 như chúng ta đã thấy trước đó và làm tương tự cho các đường thẳng đứng.
Nói chung, bạn sẽ có các điểm bắt đầu khác cùng với các điểm TOP và TRÁI từ nơi bắn tia của bạn, vòng tròn của bạn càng lớn, càng nhiều tia để đúc.
Thành thật mà nói, một số bạn có thể tránh bắn tất cả các tia đó bằng cách xem xét hình học, nhưng điều đó có thể làm cho những điều khó hiểu hơn.