मैंने svg2paths2 का उपयोग किया है, और यह पता लगाना चाहता हूं कि एक सर्कल की स्थिति और त्रिज्या क्या है, मैंने देखा है कि सर्कल 4 क्यूबिकबेजियर द्वारा बनाया गया है, जैसा कि निम्नानुसार है:
Path(CubicBezier(start=(127.773+90.5469j), control1=(127.773+85.7656j), control2=(123.898+81.8906j), end=(119.121+81.8906j)),
CubicBezier(start=(119.121+81.8906j), control1=(114.34+81.8906j), control2=(110.465+85.7656j), end=(110.465+90.5469j)),
CubicBezier(start=(110.465+90.5469j), control1=(110.465+95.3281j), control2=(114.34+99.1992j), end=(119.121+99.1992j)),
CubicBezier(start=(119.121+99.1992j), control1=(123.898+99.1992j), control2=(127.773+95.3281j), end=(127.773+90.5469j)))
मैंने मानक दृष्टिकोण पढ़ा है कि सर्कल को चार बराबर वर्गों में विभाजित करना है, और प्रत्येक अनुभाग को क्यूबिक बेज़ियर वक्र में फिट करना है।
तो मैं सोच रहा था कि क्या यह कहना सही है कि वृत्त की त्रिज्या है
(q1.start.real - q3.start.real)/2
या
(q2.start.imag - q4.start.imag)/2
और वृत्त का केंद्र है:
c_x = (q1.start.real + q1.end.real) / 2
c_y = (q1.start.imag + q1.end.imag) / 2
शुक्रिया!
1 उत्तर
मैं मान रहा हूँ कि आप अजगर में svg.path
लाइब्रेरी का उपयोग कर रहे हैं, या svg2paths2
संबंधित है।
from svg.path import Path, Line, Arc, CubicBezier, QuadraticBezier, Close
path = Path(CubicBezier(start=(127.773+90.5469j), control1=(127.773+85.7656j), control2=(123.898+81.8906j), end=(119.121+81.8906j)),
CubicBezier(start=(119.121+81.8906j), control1=(114.34+81.8906j), control2=(110.465+85.7656j), end=(110.465+90.5469j)),
CubicBezier(start=(110.465+90.5469j), control1=(110.465+95.3281j), control2=(114.34+99.1992j), end=(119.121+99.1992j)),
CubicBezier(start=(119.121+99.1992j), control1=(123.898+99.1992j), control2=(127.773+95.3281j), end=(127.773+90.5469j)))
q1 = path[0]
q2 = path[1]
q3 = path[2]
q4 = path[3]
.real
X निर्देशांक है
.imag
Y निर्देशांक है
आपके द्वारा उपयोग किए जा रहे ड्राइंग प्रोग्राम में सटीकता में बहुत मामूली त्रुटि है और यह तब तक कोई समस्या नहीं है जब तक आप अत्यधिक सटीकता नहीं चाहते।
(q1.start.real - q3.start.real) / 2 # 8.6539
इस मामले में त्रिज्या है।
(q4.start.imag - q2.start.imag)/2 # 8.6543
त्रिज्या भी है।
(q1.start.real - q1.end.real) # 8.6539
फिर से त्रिज्या भी है।
यह एक ही संपत्ति तक पहुंचता है, path
की q1
और मैं इसे उपरोक्त दो तरीकों से पसंद करता हूं क्योंकि यह एक संपत्ति तक पहुंच रहा है दो नहीं।
नीचे आरेख में हरे वृत्त द्वारा दिखाया गया है
c_x = (q1.start.real + q1.end.real) / 2 # 123.447
x के बीच में नहीं है
c_y = (q1.start.imag + q1.end.imag) / 2 # 86.21875
केंद्र में नहीं है
नीचे चित्र में लाल घेरे द्वारा दिखाया गया है
c_x = q1.end.imag # 119.121
यह केंद्र x है
c_y = q1.start.real # 90.5469
यह केंद्र y है
सटीकता में त्रुटि कितनी गंभीर है, यह समझाने के लिए, गुलाबी वृत्त 8.6543
त्रिज्या का उपयोग करता है, इसके नीचे हरे रंग में 8.6539
है, शायद अत्यधिक ज़ूम के साथ देखा जा सकता है। लेकिन यह बताता है कि दशमलव अंक कितने महत्वपूर्ण हो सकते हैं या नहीं।
१०० से कम संख्या और यथासंभव कम दशमलव बिंदुओं का उपयोग करने पर विचार करें, विशेष रूप से एक नए विचार को समझना। छोटी टेक्स्ट-लंबाई संख्याएं पठनीयता में काफी सुधार करती हैं, समझ में कोई अंत नहीं है।
मैं अक्सर दस से नीचे की संख्याओं का उपयोग करता हूँ।
नोट: आप वृत्त को वामावर्त खींच रहे हैं। दक्षिणावर्त सामान्य तरीका है।
संबंधित सवाल
नए सवाल
svg
स्केलेबल वेक्टर ग्राफिक्स (एसवीजी) एक एक्सएमएल-आधारित दो-आयामी वेक्टर ग्राफिक्स प्रारूप है जिसका उपयोग HTML में भी किया जा सकता है। इस टैग को केवल इसलिए न जोड़ें क्योंकि आपकी परियोजना एसवीजी का उपयोग करती है। इसके बजाय, टैग जोड़ें यदि आपका प्रश्न या तो एसवीजी के बारे में है, या निकटता से संबंधित है, जैसे कि एसवीजी के साथ कुछ कैसे प्राप्त किया जाए।