मैं एक 2-आयामी ग्रिड पर एक लाइन-ऑफ-दृष्टि एल्गोरिदम लागू करने की कोशिश कर रहा हूं। मुझे पता है कि इसे अवधारणात्मक रूप से कैसे काम करने की जरूरत है, लेकिन मैं इस बारे में नहीं सोच सकता कि इसे एल्गोरिदम के रूप में कैसे कार्यान्वित किया जाए।एक लाइन पर सभी ग्रिड वर्ग कैसे खोजें?
मूल विचार बहुत सरल है। स्यूडोकोड में:
function LineOfSight(point1, point2): boolean
squares = GetListOfSquaresOnLine(point1, point2)
for each square in squares
if square.IsOpaque then return false
return true
GetListOfSquaresOnLine
होगा (धारणात्मक) अंक 2 पर ग्रिड वर्ग के केंद्र के लिए point1 पर ग्रिड वर्ग के केंद्र से एक सीधी रेखा खींचना, और सभी वर्गों है कि इस लाइन से होकर गुजरता है की एक सूची प्रदान । लेकिन यह वह हिस्सा है जिसे मुझे नहीं पता कि इसे कैसे कार्यान्वित किया जाए। क्या कोई जानता है कि इसे कैसे करना है? डेल्फी या सी उदाहरण पसंद करते हैं, लेकिन आवश्यक नहीं है।
धन्यवाद! सुपरकवर लाइन मूल ब्रेसनहेम लाइन की तुलना में बेहतर फिट है। स्वीकार्य प्रतिक्रिया में इसे स्विच करना। –
इस छवि में वर्गों पर _are_ वर्ग हैं, लेकिन इन्हें हाइलाइट नहीं किया गया है। ऐसा क्यों है? --- संपादित करें: अब मैं समझता हूं। यहां एक लिंक है जो सुपरकवर http://eugen.dedu.free.fr/projects/bresenham/ प्राप्त करने के लिए एल्गोरिदम को संशोधित करता है। – byxor