कई परीक्षणों और त्रुटियों के बाद, इष्टतम तरीके से करना यह होगा निम्नलिखित:
1) सबसे पहले, हम आकार X0_ {दिया के केंद्र को परिभाषित एक्स, वाई} शुरू करें और एक्स 1_ {एक्स, वाई} लाइन के अंत बिंदु।
center_L1 = (X0 + X1)/2.
2) फिर लाइन के ढलान (कोण) को ढूंढें।
length = 10 # Line size
thickness = 2
angle = math.atan2(X0[1] - X1[1], X0[0] - X1[0])
3) ढलान और आकार पैरामीटर का उपयोग करके आप बॉक्स के अंत के निम्नलिखित निर्देशांक की गणना कर सकते हैं।
UL = (center_L1[0] + (length/2.) * cos(angle) - (thickness/2.) * sin(angle),
center_L1[1] + (thickness/2.) * cos(angle) + (length/2.) * sin(angle))
UR = (center_L1[0] - (length/2.) * cos(angle) - (thickness/2.) * sin(angle),
center_L1[1] + (thickness/2.) * cos(angle) - (length/2.) * sin(angle))
BL = (center_L1[0] + (length/2.) * cos(angle) + (thickness/2.) * sin(angle),
center_L1[1] - (thickness/2.) * cos(angle) + (length/2.) * sin(angle))
BR = (center_L1[0] - (length/2.) * cos(angle) + (thickness/2.) * sin(angle),
center_L1[1] - (thickness/2.) * cos(angle) - (length/2.) * sin(angle))
4) गणना निर्देशांक का उपयोग करना हम एक विरोधी aliased बहुभुज (धन्यवाद @martineau) और फिर के रूप में gfxdraw
वेबसाइट पर सुझाव इसे भरने आकर्षित।
pygame.gfxdraw.aapolygon(window, (UL, UR, BR, BL), color_L1)
pygame.gfxdraw.filled_polygon(window, (UL, UR, BR, BL), color_L1)
स्रोत
2015-06-02 14:47:57
अपनी लाइन के अंत-बिंदुओं और चौड़ाई के आधार पर उचित ऑफ़सेट लाइनों को परिभाषित करें और वसा रेखा का प्रतिनिधित्व करने वाले बहुभुज को परिभाषित करने के लिए उनका उपयोग करें। फिर इसे आकर्षित करने के लिए 'pygame.gfxdraw.aapolygon()' का उपयोग करें। – martineau
मेरी लाइन प्रत्येक चरण पर घूम रही है इसलिए मुझे बहुभुज के रूप में इसके सिरों को परिभाषित करने के लिए निश्चित नहीं है, + -1 इस मामले में काम नहीं करेगा। –
जिस तरह से मैंने सुझाव दिया है वसा लाइनों को रेखांकित करना एक अपमानजनक बहुभुज को ऑफसेट करने का मामला है। आमतौर पर गणित की एक उचित राशि शामिल होती है। देखें [_ एल्गोरिदम inflating/deflating (ऑफसेटिंग, बफरिंग) polygons_] (http://stackoverflow.com/questions/1109536/an-algorithm-for-inflating-deflating-offsetting-buffering-polygons)। – martineau