मुझे लगता है कि आपकी ड्राइंग थोड़ा भ्रामक है क्योंकि आप सर्कल से बिंदु पर स्ट्रोक को अपनी चलती दिशा में खींचने के लिए चुनते हैं। मैं देख सकता हूं कि जब आपके सर्कल के TOP और LEFT अंक एक किनारे को छूते हैं तो आपके ग्रिड किनारों से टकराव खुश हो जाता है।
चलो सी अपने केंद्र हो सकता है और r त्रिज्या तो पी ' = सी + ( आर , 0) और पी' = सी + (0, आर)।
यदि D आपकी दिशा वेक्टर है (छंद) तो आपकी दो लाइनें हैं:
R '= D · t + P' ,
आर "= डी · टी + पी"
आपको सरलता से समीकरण की रेखाओं के साथ उन पंक्तियों का प्रतिच्छेदन ज्ञात करना है:
y = i और y = i जो कि आपके ग्रिड के किनारे हैं!
समाधान आसान है, क्योंकि आपको केवल R या R के x या y घटक पर विचार करना है। आप प्रत्येक प्रतिच्छेदन के लिए t s मान पाएंगे, और thoose t s के लिए बिंदु, बस उन बिंदुओं को t और आप द्वारा क्रमबद्ध करें। कार्य पूर्ण।
मेरा मानना है कि आप आसानी से कह सकते हैं कि चौराहे के बिंदु को जानने पर कौन सी सेल हिट होती है।
यह काम करता है अगर r <1 (सेल की चौड़ाई और ऊंचाई)।
यह अन्य मामलों के लिए भी काम करता है, बस P ' और P "के बारे में कुछ विचार कर रहे हैं । हम दिशा के कारण TOP और LEFT चुनते हैं, BOTTOM और RIGHT को विपरीत दिशा के लिए माना जाना चाहिए, आप समझते हैं क्यों।
अब इस छवि को देखें:
सर्कल बड़ा है और फिर एक ही सेल है और हमें लगता है कि यह आपके ड्राइंग के समान दिशा में जा रहा है। पी 1 पहला बिंदु है जो स्पर्श करेगा, पी 2 दूसरा है, पी 3 बेकार है क्योंकि नीचे के आधे हिस्से में है। आपको जो करने की ज़रूरत है वह P1 और P2 से किरणों को डालना है जैसा कि हमने पहले देखा था और ऊर्ध्वाधर लाइनों के लिए भी ऐसा ही किया था।
सामान्य तौर पर आपके पास TOP और LEFT के साथ अन्य शुरुआती बिंदु होंगे जहां से आपकी किरणें शूट होती हैं, आपका सर्कल जितना बड़ा होता है, उतनी ही अधिक किरणें डाली जाती हैं।
कुछ ईमानदार होने के लिए आप उन सभी को शूट करने से बच सकते हैं जो कुछ ज्यामितीय विचार कर रही हैं, लेकिन इससे चीजें समझने में मुश्किल हो सकती हैं।